随笔 - 25, 文章 - 0, 评论 - 6, 引用 - 0
数据加载中……

C语言 malloc 工作机制

void *malloc (size_t stSize);
该函数在内存的动态存储区中分配 stSize 连续空间,返回值是一个指向所分配的连续存储域的起始地址的指针。

void free(void *firstbyte);
如果给定一个由先前的 malloc 返回的指针,那么该函数会将分配的空间归还给进程的“空闲空间”。

malloc 工作机制:
malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。

参考:http://www.cnblogs.com/xkfz007/articles/2729027.html

posted on 2013-03-19 17:08 chenjt3533 阅读(330) 评论(1)  编辑 收藏 引用 所属分类: C/C++

评论

# re: C语言 malloc 工作机制  回复  更多评论   

学习了
2013-03-29 11:15 | 曦花

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理