一、C++ 内存管理方式
C 语言的内存管理方式在 C++ 中可以继续使用,但有些地方就无能为力,而且使用起来相对繁琐一些,因此,C++ 又提出了自己的内存管理方式:通过 new 和 delete 操作符进行动态内存管理。
1.1 new/delete 操作内置类型
void test() {
// 动态申请一个 int 类型的空间
int* ptr1 = new int;
// 动态申请一个 int 类型的空间并初始化为 10
int* ptr2 = new int(10);
// 动态申请 10 个 int 类型的空间
int* ptr3 = new int[10];
delete ptr1;
delete ptr2;
delete[] ptr3;
}
1.2 new/delete 操作自定义类型
在操作自定义类型的空间时,new 会调用构造函数,delete 会调用析构函数,而 malloc 和 free 不会。
#include <iostream>
using namespace std;
class A {
public:
A(int a = 0) : _a(a) { cout << "A():" << this << endl; }
~A() { cout << "~A():" << this << endl; }
private:
int _a;
};
int main() {
// new/delete 调用构造函数/析构函数
A* p1 = (A*)((A));
A* p2 = ();
(p1);
p2;
* p3 = (*)(());
* p4 = ;
(p3);
p4;
A* p5 = (*)((A)*);
A* p6 = A[];
(p5);
[] p6;
;
}

