zyd的ChinaUnix博客
zyd
全部博文(16)
2011年(2)
2010年(10)
2009年(3)
2008年(1)
韩云松
苏幕小遮
分类: C/C++
2008-12-08 12:38:55
#include <stdio.h>#include <stdlib.h>/*
pointer tips: int *p; 此时p可能指向任何不确定的位置, 即指针悬空 int *p = NULL; 此时p不会指向任何位置,即你不能通过p访问到数据*/int main(){ int *ptr1 = (int*)malloc(8 * sizeof(int)); int *ptr2 = (int*)malloc(9 * sizeof(int)); printf("%x %x\n", ptr1, ptr2); //打印两指针所指内存单元号 printf("%d %d\n", *ptr1, *ptr2); //打印内存单元上数据,可能是任意值 ptr1 = ptr2; printf("%x %x\n", ptr1, ptr2); //两者指向相同内存单元 printf("%d %d\n", *ptr1, *ptr2); free(ptr1);
/*释放的其实是原来ptr2所指内存单元,原来ptr1所指内存单元已经无法找到 因事先没有保存,故不能释放该部分内存,导致悬挂指针*/ free(ptr2); //再次释放ptr2指向的内存地址,可能引发严重错误 return 0;
上一篇:尾端与位段
下一篇:二维数组参数传递
登录 注册