本篇文章介绍了malloc与free函数的实现代码及分析。需要的朋友参考下
用于内存管理的malloc与free这对函数,对于使用C语言的程序员应该很熟悉。前段时间听说有的IT公司以“实现一个简单功能的malloc”作为面试题,正好最近在复习K&R,上面有所介绍,因此花了些时间仔细研究了一下。毕竟把题目做来源gaodai$ma#com搞$$代**码网出来是次要的,了解实现思想、提升技术才是主要的。本文主要是对malloc与free实现思路的介绍,蓝色部分文字是在个人思考中觉得比较核心的东西;另外对于代码的说明,有一些K&R上的解释,使用绿色加亮。
在研究K&R第八章第五节的实现之前,不妨先看看其第五章第四节的alloc/afree实现,虽然这段代码主要目的是展示地址运算。
#define ALLOCSIZE 10000
static char allocbuf[ALLOCSIZE]; /*storage for alloc*/
static char *allocp = allocbuf; /*next free position*/
char *alloc(int n)
{
if(allocbuf+ALLOCSIZE – allocp >= n) {
allocp += n;
return alloc – n;
} else
return 0;
}
void afree(char *p)
{
if (p >= allocbuf && p allocp = p;
}
以上就是基于malloc与free函数的实现代码及分析的详细内容,更多请关注gaodaima搞代码网其它相关文章!