new 和 delete
new和delete的使用
- 内置类型的使用方法:
//申请单个空间
int* arr1 = new int;
delete arr1;
//申请多个空间
int* arr2 = new int[10];
delete[arr2];
//申请空间并初始化
int* arr3 = new int(0);
delete arr3;
//前三个元素依次初始化,其余初始化为0
int* arr4 = new int[10]{1,2,3}
delete[] arr4;
//new 和 delete , new [] 和 delete[] 配套使用
- 自定义类类型的使用方法:
class A{
public:
A(int a1 = 0)
:_a1(a1)
{}
private:
int _a1;
}
A* a1 = new A(1);
delete a1;
A* arr = new A[10];
delete A[10];
new 和 delete的原理
new和delete 跟 malloc 和 free的区别在于:
- new调用operator new函数申请空间
- new会执行构造函数完成初始化
- delete调用operator delete函数释放空间
- delete会执行析构函数