C语言中使用malloc()函数开辟内存空间,使用free()函数来释放内存;而C++使用new运算符来分配内存,使用delete来释放内存。
1.分配一个变量
形式如下:
P = new T;
T是任意类型名,P是类型为T* 的指针。整行代码的意思是动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P,例如:
int* p = new int;
*p = 6;
或者
int* p;
p = new int;
*p = 6;
2.分配一个数组
形式如下:
P = new T[N];
N为要分配的数组元素的个数,可以是整型表达式,例如:
int n = 5;
int* p = new int[n * 6];
for(int i = 0; i < n * 6; i++) //初始化置0
p[i] = 0;
或者
int n = 5;
int* p = new int[n * 6](); //初始化置0
3.delete释放内存
用“new”动态分配的内存空间,一定要用 “delete”运算符进行释放,即:
delete 指针/[]指针(前者用于释放动态分配的变量;后者用于释放动态分配的数组)
例如:
int* p = new int;
*p = 5;
delete p;
delete p; //导致异常,一片空间不能被delete多次
int* p = new int[20];
p[0] = 1;
delete []p;