C++新增了new和delete关键字,用来开辟内存,对应的就是C语言的malloc和free
对比new/delete和malloc/free
malloc和free是库函数,以字节为单位申请堆内存
new和delete是关键字,以类型为单位申请堆内存
malloc和free单纯的对内存进行申请与释放
对于基本类型new关键字会对内存进行初始化
对于类类型new和delete还负责构造函数和析构函数的调用
对于基础类型和数组类型,可以混搭,主要是因为实现原理
new/delete用法
分配基础类型,分配数组类型,分配对象
分配基础类型
malloc分配,free释放
int *p = (int *)malloc(sizeof(int));
free(p);
new分配,delete释放
int *p1 = new int;//相当于声明
*p1 = 10;
delete p1;
int *p2 = new int(100);//定义并初始化
delete(p2);
分配数组类型
malloc分配,free释放
int *p = (int *)malloc(10*sizeof(int)); //int a[10];
p[0] = 1;
free(p);
new分配,delete释放
int *p = new int[10];
p[0] = 1;
delete []p;
分配对象
malloc无法分配对象
Test *p = new Test(1, 2);
delete p;