operator new和malloc
指定size,malloc分配的内存:
使用malloc会带来大量的额外开销
动态分配内存块结构
operator new的底层调用malloc,operator delete底层调用free
分配器allocators
allocator的底层调用operator new,deallocator底层调用operator delete
最好减少malloc的调用
一种优化的allocator实现方法:G2.9中的alloc(即G4.9中的__pool_alloc)
alloc管理16个链表,每个链表管理特定大小的内存块
0号管理8bytes、1号管理16bytes、……、15号管理128bytes的内存块
用户向alloc申请的内存会被填充到8bytes的倍数,alloc选取合适的内存块分配给用户
只有当链表中的内存用完了才调用malloc向系统申请新的内存
G4.9中默认分配器不再是alloc,可以使用以下方式使用alloc