读书人

编译器watch异常。显示的值和内存中不

发布时间: 2012-01-01 23:10:55 作者: rapoo

求教:编译器watch错误。显示的值和内存中不一样!且实际给变量赋值的话是内存中的值,
比如

BYTE* buffer 中存储了1000字节的数。buffer是首地址

然后BYTE p = buffer[100] ; 结果是没错的,比如说是0x0a;
但是如果将buffer[100]拷贝到watch栏中,会发现显示的是0xff什么的。
而且通过内存观察内存中的数据也是0x0a

我具体的试验了一下,发现前8个字节都是正确的,到第九,十个字节出现了 0x00,0xff,然后第十一个字节本该是0x02,结果编译器显示成了0xff,之后就都是错的了。

强调一下,内存中数据和实际中取值赋给变量的数据是一致的,而且也和源数据一致。
就是编译器watch显示的值很混乱。

已经遇到过两次了,求解!!

[解决办法]
恩,要不你定义一个char *p=&buffer[108]打印出p的值(注意是p的值),以此类推,得到
p=&buffer[109]
p=&buffer[110]
把你认为不应该出错的地方的地址打出来,看他们是不是连续的

读书人网 >VC/MFC

热点推荐