社区
C语言
帖子详情
困惑的内存释放问题,大家看看。。。
xjlqlqlq
2003-08-20 12:45:24
我创建一个节点(结构),并分配了内存,
使用后如何完全释放呢怎样才算释放完了?
我的做法:
//p为某结构指针,data为结构内的数据成员(int型)
free(p);
//但是我发现free()后还能访问p的数据成员,只不过其值是随机数了,所以添加如下
//一句代码显示。。。
printf("the value is %d \n",p->data);
为什么最后一句也正常运行不报错!
是不是说明内存没有释放干净。。。
请大家指点。。。
...全文
35
8
打赏
收藏
困惑的内存释放问题,大家看看。。。
我创建一个节点(结构),并分配了内存, 使用后如何完全释放呢怎样才算释放完了? 我的做法: //p为某结构指针,data为结构内的数据成员(int型) free(p); //但是我发现free()后还能访问p的数据成员,只不过其值是随机数了,所以添加如下 //一句代码显示。。。 printf("the value is %d \n",p->data); 为什么最后一句也正常运行不报错! 是不是说明内存没有释放干净。。。 请大家指点。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ehhl
2003-08-20
打赏
举报
回复
释放干净?什么意思,
这就是指针嘛!你free掉一个指针,它其实并没有被你干掉,而是仍在那个地方
所以为了防止你后来的情况,就要养成良好的习惯:在free掉一个指针后,一定要给他赋0
即:free(p);
p=NULL;
这就比较安全,即使你不小心再执行free(p)也不会发生错误。
sevecol
2003-08-20
打赏
举报
回复
free只是交还内存的所有权
free之后再去访问释放的内存区域行为是未定的。再去写数据到释放的内存区域是极其危险的。
一般free后将指针设置为NULL.
grail0922
2003-08-20
打赏
举报
回复
free只是交还内存的所有权
free之后再去访问释放的内存区域行为是未定的。再去写数据到释放的内存区域是极其危险的。
良好的习惯是free后将指针设置为NULL.
同样还有 delete
fancy123
2003-08-20
打赏
举报
回复
free(p);//此时p为野指针,危险。
p=NULL;//将p置为空指针。
另:一般声明一个指针,好习惯就是如果没有初值的话就设置为NULL.
int *p;
p=NULL;
xjlqlqlq
2003-08-20
打赏
举报
回复
谢谢大家。。。
dddd8888
2003-08-20
打赏
举报
回复
int *p = (int *)malloc(sizeof(int));
free(p);
p = NULL;
int *p = new int;
delete p;
p = NULL;
杜绝野指针,因为你不把指针设为NULL,p还是会志向垃圾内存
if (p == NULL) 无效
Wolf0403
2003-08-20
打赏
举报
回复
free(p);
p = NULL;
这是个好的编程习惯。
skywater
2003-08-20
打赏
举报
回复
对,free了并不表示象流放犯人一样把它释放到遥远的地方,他还在那个地方呆着呢,但是你已经没有控制权了,最好将释放掉的指针设为null。
2023 C++零基础入门视频教程
第8章是
内存
分配,独立分配
释放
内存
,也是C/C++区别其它语言的地方,程序员可以直接操作
内存
,但同时也为程序的编写带来了难度,
内存
管理不好,很容易出现程序无法商用的情况。除了基础的
内存
分配,本章节也会介绍...
freeRTOS
内存
释放
问题
vPortFree
vPortFree()
内存
释放
函数,
释放
两次并不会报错。但是应当避免。 今天在看别人代码的时候,发现一个
问题
,在不同的地方把一个指针指向的
内存
释放
了两次,但是程序运行是正常的。 虽然运行没出错误,但是程序的逻辑是有
问题
的。 所以我写了下面的语句测试了一下 vPortFree(pbuf); vPortFree(pbuf); 发现确实不会导致程序运行出
问题
,但是写代码应当避免这种情况。 ...
关于堆
内存
和栈
内存
释放
js 中的
内存
分为堆
内存
和 栈
内存
堆
内存
:存储引用类型值 (对象:键值对 函数:代码字符串) 栈
内存
: 提供JS代码执行的环境和存储基本类型值 堆
内存
释放
让所有引用堆
内存
空间地址的变量赋值给Null 即可 (没有变量占用这个堆
内存
了 浏览器会在空间的时候把它
释放
掉) 栈
内存
释放
一般情况下,当函数执行完成,所形成的私有作用域(栈
内存
)都会自动
释放
掉 (在栈
内存
中存储的值也都会被
释放
掉,但...
iframe
内存
释放
问题
随着Ajax的发展,使用javascript的RIA应用越来越多,用户在同一页面中驻留的时间越来越长,
内存
泄露和
内存
占用
问题
越来越值得RIA开发者的注意,当RIA应用中
内存
得不到合理的
释放
,
内存
使用量会持续上涨,造成RIA应用反应变慢甚至会造成用户浏览器崩溃。虽然这种
问题
很少显现,但并不是说明应用中不存在这种
问题
,只不过这些
问题
在用户页面跳转和关闭浏览器时被掩盖掉,当我们RIA应用要用户一直在同一
PHP的
内存
释放
问题
参考http://www.laruence.com/2011/03/04/1894.html。 初步总结: 1.PHP会自己有一个
内存
管理,它会一次性向系统多申请一些
内存
,然后自己分配。 2.PHP也是有计数器的概念,unset只是让计数器进行减一,不代表这块
内存
真的被
释放
了,只有当指向这块
内存
的引用数为0时,这块
内存
才得到
释放
,这个
释放
是还给PHP的
内存
管理。 以下是引用
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章