int p=(int)malloc(sizeof(int));
*p=2;
int *q=p;
printf("%d",*p);
free(p);
printf("%d",*p);
两个值不一样第一个是2,第二个是875986
C++ 指针和free()的关系,看书说free()以后指针指向的内存的值还是原来的值
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
8条回答
- 四方坪僧侣 2015-04-01 15:41关注
楼上讲解的不是很清晰,应该这么理解:
1、free只是释放了malloc所申请的内存,并不改变指针的值;
2、由于指针所指向的内存已经被释放,所以其它代码有机会改写其中的内容,相当于该指针从此指向了自己无法控制的地方,也称为野指针;
3、为了避免失误,最好在free之后,将指针指向NULL。解决 5无用