C++中new和delete的小结
C++,使用new和delete来动态分配和释放内存。空间在堆区域进行分配,堆是由用户来来管理,最大的特点是可以控制生命周期(如链表的动态添加、删除)。
例: int *p = new int;
// 在理解指针的时候,把 * p看成一个整体, * p左边放的是所操作空间的类型,为int
1、new int空间:
int *p=new int; //在堆区分配一个int空间 返回一个地址
delete p; //删除p指向的空间(p还在)
2、new 数组(分配三个int空间):
int *p =new int[3]; // *P是指针,操作什么类型的空间放在左面
delete [] p ;
3、new 指针:
int* *p=new int* ; //*p是指针,操作int*类型的空间放在左边
delete p;
4、new 指针数组:
int* *p = new int*[3];//数组每个元素是 int* 类型
delete [] p;
5、new 二维数组:
int (*p) [3] = new int[2][3]; //有两个元素,每个元素是int[3]类型
delete [] p;
5、new 指针类型的二维数组:
int* (*p)[3]= new int*[2][3];//数组有两个元素,每个元素为int*[3]
delete [] p;
6 、new 结构体数组:
struct Node
{
int a;
char c;
};
Node * node = new Node[2];
delete [] node;