标题:[求助]谁能发下malloc()和free()的源代码不?
只看楼主
arther1988
Rank: 1
来 自:福州
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-30
 问题点数:0 回复次数:7 
[求助]谁能发下malloc()和free()的源代码不?
[求助]我想看下malloc()和free()的源代码~~有没有谁能发下?谢谢~急用~


[[it] 本帖最后由 arther1988 于 2008-11-30 22:22 编辑 [/it]]
搜索更多相关主题的帖子: 源代码 free malloc 
2008-11-30 22:09
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
库函数这种东西的作用就是给你提供标准接口,其内部实现是平台相关的,所以没啥标准哦

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-11-30 22:41
arther1988
Rank: 1
来 自:福州
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-30
得分:0 

我要写个函数实现malloc和free的功能,所以想看下库函数的代码。
2008-11-30 22:53
arther1988
Rank: 1
来 自:福州
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-30
得分:0 

T.T
都没人发啊~~~
2008-11-30 23:25
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
glibc里面的malloc源码至少有100多K,等看完了估计你也毕业了
呵呵,开玩笑

言归正传,你要写的作业也就是小小地模拟一下这两个函数的功能
作为作业一般来说就是先开一个很大的数组,然后在数组占用的空间里面模拟malloc就是了
旁边可以另外开个数组记录每块分配的空间有多大,首地址是什么,准备将来free用
或者干脆就在分配的空间旁边多占用几个字节记录一下也可以

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2008-11-30 23:40
arther1988
Rank: 1
来 自:福州
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-30
得分:0 
呵呵,跟5楼说的几乎一样~~
我使用的是这样的一个数据结构
struct Linker{
    unsigned int size;//数据块大小
    struct Linker * next;//指向下一个数据块
}
然后在数组里面建立结点,每个结点代表分配的一个数据块。
不过建立结点后要把使用的数据块从那个很大的数组里面剔除出去,这部分要怎么实现啊???
难道只是很简单的减小数组大小,并把next指向下一个地址?
2008-11-30 23:52
arther1988
Rank: 1
来 自:福州
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-11-30
得分:0 
回复 第5楼 forever74 的帖子
2008-11-30 23:52
jig
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:530
专家分:242
注 册:2005-12-27
得分:0 
建议这样做。

开辟一个储存空间,以BIT位来记录当前内存是否被使用。

比如32位系统,内存按4字节对齐。

比如我们32个字节的内存,即8个long。

那么而外开辟一个1个字节char,用每一位分别对应8个long

使用了的内存部分标记为1,没有使用的标记为0.这样打规模引用后,就可以编写malloc和free函数

个人网站 -  http://.h001.
2009-09-18 09:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-247094-1-1.html




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

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