侯捷 c++ 内存管理笔记 p16-p23

new handler

理解C++ new-handler机制

=default =delete

C++中的 =default和=delete

VC6 malloc

侯捷 c++ 内存管理笔记 p16-p23_第1张图片
申请一块12字节大小的内存,vc6实际分配大小为0x40 (56),其中绿色的pad为填补所用

VC6标准分配器实现

侯捷 c++ 内存管理笔记 p16-p23_第2张图片

BC5标准分配器实现

侯捷 c++ 内存管理笔记 p16-p23_第3张图片

G2.9标准分配器实现

侯捷 c++ 内存管理笔记 p16-p23_第4张图片
侯捷 c++ 内存管理笔记 p16-p23_第5张图片

G2.9 std::alloc VS G4.9 __pool_alloc

侯捷 c++ 内存管理笔记 p16-p23_第6张图片

std::alloc

  • 16条链表,都为指针,每条负责一种大小的内存,依次为8、16…16*8字节,当申请的大小超过最大的时候,调用malloc
  • 一次挖20个对应大小的块,但还会保留20个备用块
  • 不同链表管理的内存可能是相连的
  • 分配的内存都是没有cookie的(cookie free)

侯捷 c++ 内存管理笔记 p16-p23_第7张图片

embedded pointers(嵌入式指针)

侯捷 c++ 内存管理笔记 p16-p23_第8张图片

你可能感兴趣的:(侯捷C++内存管理,c++,开发语言,后端)