new的过程

- new关键字调用operator new
- operator new调用malloc
- 强制转换
- 调用构造函数(这也是为什么malloc不能申请包含指针的类内存的原因)
delete过程

- delete关键字
- 调用析构函数
- delete关键字调用operator delete
- operator delete调用free
malloc分配的内存并不只是你申请的大小

- pad是内存对齐
- 上下粉色是cookie,记录分配内存的信息,操作系统用于回收内存
[]new一定要用[]delete,否则可能会发生内存泄漏


- []new会分配多四个字节,记录n个对象
- delete使用[]才会读取记录,调用n次析构函数
- delete不使用[],只调用1次析构函数
- 注意:并不是malloc这一块的内存发生泄漏,而是调用构造函数的对象发生了内存泄漏
- 如果[]new不需要调用构造函数分配内存,那么即使使用delete也不会发生内存泄漏,但是最好也要匹配使用
new、delete、[]new、[]delete
原文:https://www.cnblogs.com/wasi-991017/p/14280154.html