| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1000 人关注过本帖
标题:链表的内存管理之你见
只看楼主 加入收藏
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
结帖率:57.14%
收藏
已结贴  问题点数:40 回复次数:4 
链表的内存管理之你见
申请个内存空间用malloc 释放一个内存空间用free
每个malloc 之后 必定 要用释放
频繁的运用malloc 和 free 会有什么影响?效率是否会变慢。

先一次性申请多个内存,用一个链表结构把它们连起来。
用的时候,在内存链表查找可用内存,返回可用内存地址,再把此内存从内存链表中删除,如果内存链表中无可用内存,再调用malloc来申请内存。
释放的时候,把内存插入内存链表中。

在程序结束之前 释放内存链表即可。

此法引自台湾资讯教育小组一书《数据结构-C语言版》
搜索更多相关主题的帖子: 链表 内存 管理 
2010-08-02 10:57
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:20 
这种方法不就是操作系统分配内存的方法吗,看看操作系统的教程,好像是的!
2010-08-02 12:42
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
收藏
得分:20 
程序中如果用malloc等函数,则是在堆上分配空间,如果你看过malloc的函数体,你可以发现它是与操作系统打交道的,显然操作系统要查找合适的空间块,甚至会查找虚存,频繁的申请和释放导致性能下降。

所以都应用内存池技术(可以Google一下),相当于先从操作系统中malloc一批空间,自己管理分配和释放,这样频繁申请和释放,就不会产生每次都要跟操作系统交互的开销,性能就上来了,一般是大程序中才会应用此技术。

编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-08-02 18:11
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 楼主 do8do8do8
先一次性申请多个内存 ?这多个内存大小怎么分布呢?等大小

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-08-06 02:13
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:0 
对象池,可以有给申请的内存大小赋值(根据实际需求).不足时再分配一些.当小于某一标准,释放.
怎么感觉跟vector的处理方法差不多
2010-08-14 15:51
快速回复:链表的内存管理之你见
数据加载中...
 
   



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

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