求教:编译器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]
把你认为不应该出错的地方的地址打出来,看他们是不是连续的