VC6内存管理malloc(1)

vc6程序main之前和之后的示意图(call stack),执行前内核先调用mainCRTStartup()函数,_heap_alloc_base()函数对内存分配有两种情况,小于1016字节,调用_sbh_alloc_block,管理小内存。大于1016字节使用windows调用HeapAlloc进行内存分配。

vc10程序call stack,sbh调用深埋到OS的HeapAlloc内,由操作系统管理小内存块,sbh_alloc_block,sbh_alloc_new_region,sb_alloc_new_group在新版里没有了。

_heap_init动作:先从内存申请4096(BYTES_PER_PAGE)字节,供之后sbh_heap_init使用。_sbh_heap_init从_crtheap申请16个申请HEADER,

HEADER介绍bitvEntryHi,bitvEntryLo组成64bit,bitvCommit32bit,如下图:

最终sbh示意图,用于管理1M内存,使内存申请更快,减少碎片:

转载于:https://my.oschina.net/u/4000302/blog/3083329

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值