
malloc带有cookie,用掉8个字节。


在debug mode的情况下,会分配的大小。mDataSize真正要分配的内存大小。
gap:4个字符,如果越界就会报异常。

所有malloc分配的内存块,都被保存起来。

把刚计算出的size,如果比_sbh_threadhold(1016,这个没有加cookie)小,用_Sbh_alloc_block。
malloc的cookie机制
在malloc为用户分配内存的时候,除了分配用户本身的内存,还会在内存前后加上两个cookie,来记录分配了多少内存,这样在调用free函数的时候才能准确的回收内存。因此每次调用malloc函数都会产生cookie消耗。

会调整为16的倍数。用最后一位是0,在操作系统,1被使用。

一个header负责管理1Mb的内存。


每个page都是4k

0xffffff,设置-1,回收时,用-1作为分割器。第一块记录大小。
最后一条链表,管理大于1K。如果小于1K,计算用哪个链表。

上面是内存的划分给到申请者。

64个链表是16个字节,按16个字节递增。

上面是回收,检查cookie的最后一位是否是0,如果是0,可以合并。表明了上下cookie的作用。
深入理解:内存管理中的Cookie机制与malloc细节
本文解析malloc的cookie机制,探讨如何在内存分配中加入额外的8字节cookie,用于记录内存大小和边界保护,以及内存块的高效管理和合并策略。涉及16字节对齐、1MB内存块和64个链表的组织方式。
2万+

被折叠的 条评论
为什么被折叠?



