码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Memory Management malloc free

时间:2018-06-03 00:02:43      阅读:284      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!