wangjunstf / wangjunstf.github.io

我的博客。
https://wangjunstf.github.io/
0 stars 0 forks source link

C/C++ 实现一个堆内存分配器(malloc/free) | 编程之禅 #45

Open wangjunstf opened 2 years ago

wangjunstf commented 2 years ago

https://wangjunstf.github.io/2021/11/09/c-yu-yan-shi-xian-yi-ge-dui-nei-cun-fen-pei-qi-malloc-free/#more

C 语言使用 malloc 分配内存,使用 free 释放内存。那么它们是怎么实现的呢? 堆内存位于数据段(data) 和内存映射区之间,它有一个堆顶指针 brk,malloc 将堆内存分为空闲块和已分配块,使用链表来管理空闲块和已分配块。当堆内存用完时,使用系统调用 sbrk 增大 brk 来增大堆内存的大小。当要求分配的内存大小大于空闲块时,就将空闲块分成两份,一份分配给用户,剩下的内存作为一