本文共 435 字,大约阅读时间需要 1 分钟。
#include#include #include typedef struct { char s[16];} PString;void main() { PString *p; int n = 8; p = (PString *) malloc(n * sizeof(PString)); int i = 0; for(; i < 16; i++) { p->s[i] = 'a' + i; } printf("%s", p->s); free(p);}
这段程序中分配得到8个PString结构的内存。奇怪的是,在gdb调试的时候即使是"p sizeof(*(p+5000))",还是会得到正确的数字,而且p *(p+5000)也可以访问。
在程序中即使添加"(p+10)->s[0] = 'a'"也是正确的,就是说可以访问超过分配得到的空间的内容。 为什么呢?
转载地址:http://idgti.baihongyu.com/