有目的的访问内存空间
如题,因为最近看到很多关于内存的帖子,分析后感觉很好玩。
就如那个很强的公司的面试题一样,在看vc6.0自带的调试工具的时候发现了一个问题。
#include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int *)(&a+1);
printf("%x",ptr1[-1]);
}
第二问省掉了。
那个我在看ptr1的时显示是0x0012ff80,而&a是0x0012ff6c,正常。但是当我看&a+1是它显示是0x0012ff6d,显然不对,因为对指针加一相当于加上 数组长度*类型字节数,所以&a+1地址也应该是0x0012ff80才对,后来直接打印&a+1后也证实我的想法正确。
后来在同学vs2005上就没有这个错误。 所以我认为vc6.0的调试工具有一点问题。
虽然只是地址的问题,不会影响到里面的内容。
但是还是相当想写一个可以实时看内存的软件。但苦于不知道怎么有目的的访问内存?
希望明白的大侠们给指明一条道路,谢谢了。
其实只要看0x0012ff**这段就可以了,貌似足够了。如果可以看到其他部分就更好了。