侯捷 C++内存管理 (一)

本篇记录 《侯捷 C++内存管理 》,整理各节的要点,以备查阅

1.Overview

侯捷 C++内存管理 (一)_第1张图片

2.内存分配的每一层面

侯捷 C++内存管理 (一)_第2张图片

3.四个层面的基本用法

1)、对比一下:

侯捷 C++内存管理 (一)_第3张图片

4.基本构件之一newdelete expression(上) ——》new和operator new、malloc()函数的的关系:

侯捷 C++内存管理 (一)_第4张图片

5.基本构件之一newdelete expression(中) ——》直接调用析构函数

侯捷 C++内存管理 (一)_第5张图片

6.基本构件之一newdelete expression(下)

7.Array new 、array delete的泄露问题——》泄露的是指针指向的内存空间

当new[ ]的对象是int 或者复数等类型时,delete和delete[ ] 都是可以的,因为对象里面没有指针,析构函数不会清理指针所指向的内存;但是如果new[ ]的对象是带有指针的话,那么就一定要用delete[ ] 了。

侯捷 C++内存管理 (一)_第6张图片

8.Replacement new——》已经申请分配好了内存地址,如下:buf 

总结:new ——》array new——》placement new的区分

侯捷 C++内存管理 (一)_第7张图片

placement new的形式:new()

9.重载

——》看operator new函数是否有重载,如果没有重载,就调用全局的operator new;如果有重载,就用重载过的函数。

侯捷 C++内存管理 (一)_第8张图片

 

容器里面申请分配内存的流程:

侯捷 C++内存管理 (一)_第9张图片

10——11.重载示例(上 中 下)

placement new的重载示例:

侯捷 C++内存管理 (一)_第10张图片

 

 

你可能感兴趣的:(C+)