malloc 实现

malloc—动态内存分配

malloc是我们在动态分配内存时常使用到的一个函数,malloc需要和free函数搭配使用。同时动态内存分配函数还有如calloc、realloc,同时动态分配的内存都在堆上。

在MSDN中,malloc的作用是开辟一个内存块。

函数原型 void *malloc(size_t size);

size是开辟的内存所占多少字节。

返回类型是void* 型(未确定类型的指针),void* 可以强转为任何类型的指针。

返回值:如果内存分配成功返回指向被分配内存的指针;则否返回空指针NULL。 当分配的这块内存不再使用时,应使用free将内存块释放掉。

malloc工作机制/实现原理:
(查资料得)

它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。

调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后将该内存块分割成用户所需要的内存大小,把要分配给用户的内存传给用户,剩下的内存返回到连接表上。

free的实现原理:

调用free时,它将用户释放的内存块连接到空闲链上。所以最后空闲链可能被分割成了很多的小内存片段,而这时候用户申请一个很大的内存片段,空闲链上可能就没有这么大的片段了。这时候malloc请求延时,在空闲链上合并相邻的小空间块。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值