社区
C语言
帖子详情
困惑的内存释放问题,大家看看。。。
xjlqlqlq
2003-08-20 12:45:24
我创建一个节点(结构),并分配了内存,
使用后如何完全释放呢怎样才算释放完了?
我的做法:
//p为某结构指针,data为结构内的数据成员(int型)
free(p);
//但是我发现free()后还能访问p的数据成员,只不过其值是随机数了,所以添加如下
//一句代码显示。。。
printf("the value is %d \n",p->data);
为什么最后一句也正常运行不报错!
是不是说明内存没有释放干净。。。
请大家指点。。。
...全文
42
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。
freeRTOS
内存
释放
问题
vPortFree
今天在看别人代码的时候,发现一个
问题
,在不同的地方把一个指针指向的
内存
释放
了两次,但是程序运行是正常的。 虽然运行没出错误,但是程序的逻辑是有
问题
的。 所以我写了下面的语句测试了一下 vPortFree(pbuf);...
关于堆
内存
和栈
内存
释放
提供JS代码执行的环境和存储基本类型值 堆
内存
释放
让所有引用堆
内存
空间地址的变量赋值给Null 即可 (没有变量占用这个堆
内存
了 浏览器会在空间的时候把它
释放
掉) 栈
内存
释放
一般情况下,当函数执行完成,所形成...
PHP的
内存
释放
问题
...2.PHP也是有计数器的概念,unset只是让计数器进行减一,不代表这块
内存
真的被
释放
了,只有当指向这块
内存
的引用数为0时,这块
内存
才得到
释放
,这个
释放
是还给PHP的
内存
管理。 以下是引用
solr、solrcloud
内存
溢出,
内存
不
释放
问题
解决方法
本人在使用solrcloud的时候发现
内存
有时候都快80-90%多了还不
释放
,可能再过一段时间就oom了,从而整个集群不能对外提供服务了,该
问题
一直
困惑
着我,后来我写一个一个linux小工具可以对solr任意版本进行
释放
内存
,...
openCV
内存
释放
问题
前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的
问题
。...
内存
泄露是说没有
释放
已经不能使用的
内存
,这里一般指堆的
内存
才需要显示的
释放
。比如用malloc,calloc,real
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章