搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 内存分配详解(对内存有疑惑的进来看看)
标题:
内存分配详解(对内存有疑惑的进来看看)
只看楼主
南国利剑
等 级:
贵宾
威 望:
29
帖 子:1165
专家分:3536
注 册:2010-4-12
第
31
楼
得分:0
回复 30楼 小破鱼
等你学了指针和动态申请内存,然后再来看,你就会有所感悟了。
南国利剑
2010-06-23 22:51
怪才
等 级:
新手上路
帖 子:3
专家分:0
注 册:2010-5-31
第
32
楼
得分:0
灰常感谢 现在我收藏了~ 恩恩
2010-06-24 08:46
风兮飞扬
该用户已被删除
第
33
楼
得分:0
提示:
作者被禁止或删除 内容自动屏蔽
2010-06-29 11:35
风雨氵
来 自:天津
等 级:
新手上路
帖 子:24
专家分:5
注 册:2010-5-13
第
34
楼
得分:0
顶!!!
2010-07-03 16:24
zzyu220
等 级:
新手上路
帖 子:11
专家分:7
注 册:2010-7-2
第
35
楼
得分:0
明白了,谢谢了!
2010-07-05 22:14
东海一鱼
等 级:
贵宾
威 望:
48
帖 子:757
专家分:4760
注 册:2009-8-10
第
36
楼
得分: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
南国利剑
等 级:
贵宾
威 望:
29
帖 子:1165
专家分:3536
注 册:2010-4-12
第
37
楼
得分:0
回复 36楼 东海一鱼
但是这里很显然,这点你知道吧,p是一个局部变量,一旦函数调用结束,
p的内存就会被收回,但它所指的空间却还存在,
这不是它自己不用,确切的说它自己没有办法用了,
却不让别人用。
这就是内存泄露,我要说的就这么一回事。
[
本帖最后由 南国利剑 于 2010-7-10 13:29 编辑
]
南国利剑
2010-07-10 13:27
东海一鱼
等 级:
贵宾
威 望:
48
帖 子:757
专家分:4760
注 册:2009-8-10
第
38
楼
得分:0
回复 37楼 南国利剑
好,我再简化一点:
我有一个全局void* gpoint变量。
在局部变量指针p完成分配堆内存后,令 *gpoint = *p 然后局部函数返回。这时候p虽然已经不可访问了。
但已经分配的对内存地址仍然保存在gpoint中,当然可以随意使用访问。
举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-10 16:51
ccmike98
来 自:苏州
等 级:
论坛游民
帖 子:76
专家分:56
注 册:2010-7-13
第
39
楼
得分:0
学习了 LZ加油
2010-07-17 15:07
boy_good
来 自:山东
等 级:
新手上路
帖 子:1
专家分:0
注 册:2010-7-18
第
40
楼
得分:0
好久,好久了,一年多没触C了,有些心酸,谢谢了,哥们
起飞吧
2010-07-18 01:45
43
4/5页
1
2
3
4
5
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-309082-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.739077 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved