首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

malloc()跟sbrk()的具体区别是什么

2013-09-06 
malloc()和sbrk()的具体区别是什么?当然我也只知道malloc调用了sbrk,但是malloc多了点什么呢?麻烦能详细讲

malloc()和sbrk()的具体区别是什么?
当然我也只知道malloc调用了sbrk,但是malloc多了点什么呢?麻烦能详细讲一下,我是菜鸟,希望大家能通俗点哈 malloc
[解决办法]


如果我没有记错的话,malloc分配完内存,其实实际分配的内存比用户分配的内存要多几个字节,这个用来存放free结束符的,通知对应free到这个字节的时候就结束free,如果破坏了这个预留字节的话,就有可能释放了所有的堆空间的,

貌似sbrk没有这个功能的吧!
void *sbrk(intptr_t increment);
increment 为正数则是 分配内存, 为负数则是释放内存!
而且 sbrk 一般和 brk 成对使用
sbrk负责分配内存,brk负责释放内存!

[解决办法]
sbrk是系统调用,是Unix/Linux系统提供的接口(只能在Unix/Linux系统下才能用的)。而malloc是标准c函数在,所以在Unix/Linux和windows下都能用。
ps:在Unix/Linux下,malloc底层实现就是通过系统调用sbrk实现的;在windows下malloc则是通过调用windows系统提供的接口实现。

热点排行