dat格式是什么 C++内存泄漏检测工具(7)

电脑杂谈  发布时间:2019-04-08 14:11:21  来源:网络整理

我同事前两天坐公车,她怀孕快七个月了站着累,所以特意挪到一个旮旯里而且是后面,结果上来个颤颤巍巍的老太太,从前面愣是一直挪到后面在她的位置站定,她当时快哭了(@_)她前面两个五十来岁的老太太就一直看着她,意思是你怎么不让座(-_-)。要封装两个模型,其中一个模型用来保存每一个省份数据,其中包括(1)最基本的省份名称 (2)设置一个标志,标志当前省份是否被点击展开显示 (3)一个数组,用来保存一组市名称。由此可以得出,在使用getchar进行字符输入时,按回车键表示输入结束,但同时按回车键也产生一个转义字符’\n’,这个字符会被后面的 getchar 函数接收,因此利用连续多个getchar ()函数给多个字符变量赋值时应注意只在最后一个字符后面按回车键,其它字符连续输入,字符间不要添加任何符号,否则会产生错误。:一到四个字节表示一个字符,utf-8是一到两个字节,为了显示亚洲的等字符,比如中文,日文,所以要用u...。

1.watch窗口中,在整形变量后面加上",c"可以显示该变量对应的ASCII字符。实际上,可以直接敲数字这么显示也行。比如上面右边窗口中的118,c的对应值是'v'。也就是说118对应的ASCII字符是'v'。那么,反过来,要知道一个字符的ASCII码值怎么看呢?看上面,'v',d就是显示字符'v'对应的十进制ASCII码值是118。'v',x显示的是对应的十六进制的ASCII码值。除了",c" ",d" ",x"外,还有一些其他的参数可以加,见后面的附表。

然后我们看看变量a。a是个指针。看左边窗口,即使点了它的+号展开,也只看到了它指向的地址的第一个元素(49)。如果想要看得更多的数据,也可以像我一样,在上面的Memory窗口里看。但是Memory窗口只有一个,要看多个指针指向的数据就麻烦了,切来切去。那就在watch窗口中显示吧,a,4就可以了,看到我的watch窗口的显示没?所以,有了第二个小技巧:

2.watch窗口中,把指针当成数组看,只要在指针名后面加上一个长度,就可以想看数组一样看到对应的数据了。比如我上面的a,4。那么如果一个指针指向的数据很大,比如一个整形指针a是指向一个1000个整数的大块内存,我只想看看最后4个数据,要怎样呢?那就(a+996),4呗。从第996个数据开始,看4个~

接下来这个小技巧是我最喜欢的一个了。调试中遇到系统函数调用失败的情况,通常都要加上GetLastError()函数获得返回值,然后查对应的解释才知道错误原因。比如,我上面的代码要打开一个不存在的文件,结果fopen失败。取回了错误码dwError=2,一查才知道是文件不存在。那么可不可以不用查,调试器直接告诉我原因呢?当然可以,不然我写这干嘛!刚才的错误码2是记录在dwError中了,所以只要在watch窗口看看dwError,hr看value栏:系统找不到指定的文件!爽吧!总结一下,第三个小技巧:

3. 在watch窗口中察看错误原因,只需要在错误之后面颊上",hr"就可以了。比如我上面的 dwError,hr 和 2, hr 都能够显示错误消息。想看某个错误码的解释,只要后面加上",hr"就轻松搞定,非常方便!这里还要提一下的是,即使不调用GetLastError()也是可以看错误原因的。在fopen()调用完后,直接在watch窗口敲err,hr也可以显示最近一次的错误原因。但是我机器重新装了os,还没装vc,现在用的还是安装前的尸体。所以这个err,hr的显示有问题。不过还是有应对之法,那就是强大的TIB信息。watch窗口看看*(unsigned long*)(TIB+0x34), hr也是一样的。至于为什么吗,那就是GetLastError的机制了。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/shumachanpin/article-93422-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...