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内存,使内存申请更快,减少碎片:

347

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



