| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5631 人关注过本帖, 5 人收藏
标题:内存分配详解(对内存有疑惑的进来看看)
只看楼主 加入收藏
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 30楼 小破鱼
等你学了指针和动态申请内存,然后再来看,你就会有所感悟了。

南国利剑
2010-06-23 22:51
怪才
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-5-31
收藏
得分:0 
灰常感谢 现在我收藏了~ 恩恩
2010-06-24 08:46
风兮飞扬
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-06-29 11:35
风雨氵
Rank: 1
来 自:天津
等 级:新手上路
帖 子:24
专家分:5
注 册:2010-5-13
收藏
得分:0 
顶!!!
2010-07-03 16:24
zzyu220
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2010-7-2
收藏
得分:0 
明白了,谢谢了!
2010-07-05 22:14
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
未尽然也!
void f()
{
   
   char * p;
   p = (char*)new char[100];
   
}
仅凭这样的代码就断定内存泄露,太武断了点。因为还要看上下文的代码才知道。

譬如:
void f()
{
   
   char * p;
   p = (char*)new char[100];
   gDataList.add(p);                    //gDataList为全局数据组织链表对象。
   ...                          
}

就没有问题呀,完全可以等释放连表对象时在逐一释放节点数据指针。




举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-09 22:51
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
回复 36楼 东海一鱼
但是这里很显然,这点你知道吧,p是一个局部变量,一旦函数调用结束,
p的内存就会被收回,但它所指的空间却还存在,
这不是它自己不用,确切的说它自己没有办法用了,
却不让别人用。
这就是内存泄露,我要说的就这么一回事。

[ 本帖最后由 南国利剑 于 2010-7-10 13:29 编辑 ]

南国利剑
2010-07-10 13:27
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
收藏
得分:0 
回复 37楼 南国利剑
好,我再简化一点:

我有一个全局void* gpoint变量。

在局部变量指针p完成分配堆内存后,令 *gpoint = *p 然后局部函数返回。这时候p虽然已经不可访问了。
但已经分配的对内存地址仍然保存在gpoint中,当然可以随意使用访问。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-10 16:51
ccmike98
Rank: 2
来 自:苏州
等 级:论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
收藏
得分:0 
学习了    LZ加油
2010-07-17 15:07
boy_good
Rank: 1
来 自:山东
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-7-18
收藏
得分:0 
好久,好久了,一年多没触C了,有些心酸,谢谢了,哥们

起飞吧
2010-07-18 01:45
快速回复:内存分配详解(对内存有疑惑的进来看看)
数据加载中...
 
   



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

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