C++ 内存管理方式
C语言中的内存管理方式在C++中仍然可以继续使用,但是也有很多地方并不好用,例如栈的生成与销毁,用起来比较复杂,因此C++提出了自己的内存管理方式,通过new和delete来进行动态内存管理
new delete 操作内置类型
1 | void fun() |
包括 malloc 和 free 这些申请与销毁空间的操作必须匹配起来使用,切忌混用
new delete 操作自定义类型
1 | class A |
与 malloc 和 free 不同的是 new 会调用构造函数而 delete 会调用析构函数
new delete 的实质
operator new 与 operator delete 函数
new 和 delete 是动态内存申请与释放的操作符,而上面那两个函数是系统的全局函数,实际上如果我们找到new与delete的定义,观察发现,仍然使用malloc与free来进行操作的
我们可以通过反汇编来观察
这里我们可以看到,先调用了operator new 再调用了构造函数
而delete是先调用析构函数再调用operator delete