stl之分配器allocators
先谈operator new()和malloc()
c++分配内存动作最终都会跑到malloc上,所以operator new里也是调用malloc
那malloc分配内存什么样子呢?如下图所示
蓝色块是实际大小,上下2个红色是cookie,作分界用,整个内存大小会调整到某个边界,所以有绿色的(没有实际内容),灰色的是在debug的时候有的。
所以malloc分配的内存比实际需要的多
vc6 stl对allocator的使用
分配器最重要的两个函数:allocate、deallocate
在vc下allocate会调用到operator new即malloc,deallocate会调用到operator delete即free
所以在vc6里的allocator没有任何设计
G2.9 的 alloc(会在内存管理详解)
因为容器的大小是固定的,所以可以去除malloc多余分配的内存(例如cookie),该有16个链表,第一个链表负责8字节的内存分配,后面链表依次加8字节。