sshyzzybfl 2015-03-25 14:22 采纳率: 0%
浏览 3860
已结题

C++ 指针和free()的关系,看书说free()以后指针指向的内存的值还是原来的值

int p=(int)malloc(sizeof(int));

*p=2;

int *q=p;

printf("%d",*p);

free(p);

printf("%d",*p);
两个值不一样第一个是2,第二个是875986

  • 写回答

8条回答 默认 最新

  • 四方坪僧侣 2015-04-01 15:41
    关注

    楼上讲解的不是很清晰,应该这么理解:
    1、free只是释放了malloc所申请的内存,并不改变指针的值;
    2、由于指针所指向的内存已经被释放,所以其它代码有机会改写其中的内容,相当于该指针从此指向了自己无法控制的地方,也称为野指针;
    3、为了避免失误,最好在free之后,将指针指向NULL。

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?