标签:bug debug pad 指针 9.png TE head 操作 目的
Malloc free
VC6.0 malloc 模式
VC10 内存调用模型
Header就是一个长16的数组。 就是那个crtheap
第一个分配的内存块。 32 * (4+1+1+2(pading)) = 256bytes
在debug模式下,会分配额外的内存用来存放数据。
进行round_up操作
一个header负责管理1M内存,就靠两个指针,一个指向真正的内存,一个指向管理中心。
控制中心大小大概有16K左右
将8个4K串联起来挂到最后一个链表上面。这就和空间配置器中的第二级别的配置类似了。
大观念
1K以上的都归最后一个链表管理
延缓内存的回收
malloc已经很快了,allocator这样做的目的是为了取出冗余。
叠床架屋 有必要么
因为每个层次都不敢依赖下面的那一套,因此都自己设计了一套
到此 这个部分就结束了,直少现在看来,malloc的实现也是采用这种大区域和小内存块不同处理方式的方式。
C++ Memory Management malloc free
标签:bug debug pad 指针 9.png TE head 操作 目的
原文地址:https://www.cnblogs.com/randyniu/p/9127411.html