C++ Memory Management malloc free

 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的实现也是采用这种大区域和小内存块不同处理方式的方式。

猜你喜欢

转载自www.cnblogs.com/randyniu/p/9127411.html