|
发表于 2018-8-20 16:44:02
|
显示全部楼层
嗯嗯
让 p = NULL; 是不是等于作废了?这个指针不能再用了,用了会报错~
之前地址表示使用 %p 出来的数字很长 T_T
malloc 前后,p 的地址改变了
但是照理来说,动态内存是在【堆】,也就是低地址,但 0061FE1C -> 001D6CC0 被推高了?
还是说 windows 不一样而已??
- #include <stdio.h>
- #include <stdlib.h>
- //#include <string.h>
- int main () {
- int a[10] = {10, 1, 2, 3, 4, 5, 6, 7, 8, 9};
- int b = 5;
- int *p = &b;
-
- printf("size a= %d, Address = %0.8X\n", sizeof(a), a);
- printf("size b= %d, Address = %0.8X\n\n", sizeof(b), b);
-
- printf("val= %10d, Address = %0.8X, size = %d\n", *p, p, sizeof(p));
- p = (int *)malloc(sizeof(b)*5) ;
- printf("val= %10d, Address = %0.8X, size = %d\n\n", *p, p, sizeof(p));
-
- free(p);
- printf("val= %10d, Address = %0.8X\n\n", *p, p);
- printf("size= %d, Address = %p\n", sizeof(a), a);
- return(0);
- }
复制代码 |
|