| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 553 人关注过本帖
标题:上次malloc还不怎么懂,多谢
只看楼主 加入收藏
rainzhang714
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-19
收藏
 问题点数:0 回复次数:4 
上次malloc还不怎么懂,多谢

在潭浩强的书里,介绍链表时,增加一个结点就在creat函数中用malloc开辟一段区域,

但是

// void Example(void)
{
char *p = (char *)malloc(100 * sizeof(char));
}
在函数调用之后,指针p确实是已经消亡了,但是这并不是说申请的内存也跟着消亡了,这段内存还是存在,系统没有回收,但是这段内存也不能用,函数已经调用结束了。

如果在函数调用之后,这段内存不能用,那怎么建立链表啊???

搜索更多相关主题的帖子: malloc 
2006-07-19 17:55
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
在creat函数中,内存的申请后又写入了内容,这样不是就是在建立链表吗?

我的原则很简单:不做不喜欢的事!
2006-07-19 20:01
摄政王:多尔滚
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-7-9
收藏
得分:0 
can used

19世纪是火车的时代,20世纪是汽车的时代,21世纪是网络的时代。有谁不同意?
2006-07-19 20:30
wangsong
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2006-7-15
收藏
得分:0 

这与运行环境有关,要知道,当发生函数调用时,数据放在栈中的,当函数返回后要弹栈,所以函数中的局部变量随之消亡。在这里,指针是局部变量,当函数返回后指针变量局不再存在,而动态申请的内存是在堆中分配的,是全局的,即使函数返回了,但是动态分配的存储单元仍然存在,如果程序员不显示的释放这段空间,那么当程序退出后由操作系统来完成内存的回收工作。
malloc();函数动态申请了一段空间,并将申请到空间的首地址作为函数的返回值返回。


2006-07-19 21:31
rainzhang714
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-19
收藏
得分:0 
谢谢
2006-07-20 10:23
快速回复:上次malloc还不怎么懂,多谢
数据加载中...
 
   



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

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