| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:这样可以将获得的空间释放掉吗?
只看楼主 加入收藏
dreamofgod
Rank: 5Rank: 5
等 级:职业侠客
帖 子:194
专家分:341
注 册:2011-8-16
结帖率:95.24%
收藏
已结贴  问题点数:20 回复次数:6 
这样可以将获得的空间释放掉吗?
这样获取内存:
int a[10]={0};
//或者
int* a=(int*)malloc(40);
中间没有其它变指针指向a获取的内存。

这样释放a获得的内存:
a=NUll;
//或者
int b[10]={0};
a=b;
这样操作会释放之前获取的内存吗?
如果不能的话,此时,原来空间该如何释放?

如果被释放了的话,下面这个操作是不是意味着,原来的a[0]位置内存已经被释放了呢?
a++;

求指教。
搜索更多相关主题的帖子: 内存 空间 color 
2011-10-06 15:19
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:7 
回复 楼主 dreamofgod
获得的内存,是你主动获得的,也就是malloc获得的,需要用free释放掉。而在代码里定义的变量是操作系统给你分配在栈上的,会随着函数结束自动被释放,不用人工干预。

总有那身价贱的人给作业贴回复完整的代码
2011-10-06 16:01
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:7 
当初设计智能指针的想法就是这么来的。

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-10-06 16:04
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:7 
int* a=(int*)malloc(40);  a = NULL 这样你就把内存泄露了 也就是在你的程序生存期间

如果以前没有保存那个指针  那么你就不可能再去访问它

                                         
===========深入<----------------->浅出============
2011-10-06 16:08
flyue
Rank: 10Rank: 10Rank: 10
来 自:江南西道
等 级:贵宾
威 望:19
帖 子:3465
专家分:1563
注 册:2006-6-20
收藏
得分:0 
垃圾回收吧

天之道,损有余而补不足.人之道则不然,损不足以奉有余.孰能有余以奉天下,唯有道者.
2011-10-06 17:37
dreamofgod
Rank: 5Rank: 5
等 级:职业侠客
帖 子:194
专家分:341
注 册:2011-8-16
收藏
得分:0 
嗯,理解了,谢谢大家。

一个单片机就让我头疼不已~~~
2011-10-06 21:51
mfh
Rank: 6Rank: 6
等 级:侠之大者
帖 子:179
专家分:411
注 册:2009-5-31
收藏
得分:0 
内存:静态内存、堆内存【可以通过MALLOC\FREE来自己控制】、栈内存。
2011-10-07 11:38
快速回复:这样可以将获得的空间释放掉吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016087 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved