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字节。

posted @ 2023-02-23 19:42  acwarming  阅读(33)  评论(0编辑  收藏  举报