1.用new 运算符实现动态内存分配
(1)第一种用法,分配一个变量:
P = new T; //T是任意类型名,P是类型为T*的指针。
动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:
int * pn;
pn = new int;
*pn = 5;
(2)第二种用法,分配一个数组:
P = new T[N]; //T :任意类型名 P :类型为T*的指针 N:要分配的数组元素的个数
int i=5;
pn = new int[i *20]; //可以是整型表达式
动态分配出一片大小为 N* sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P
(3)new 运算符返回值的类型
new T; new T[n]; //这两个表达式返回值的类型都是T*
int * p = new int; / /俩边都是 int* 类型才能匹配
2.用delete运算符释放动态分配的内存
用“new”动态分配的内存空间,一定要用“delete”运算符进行释放
delete 指针;//该指针必须指向new出来的空间
int * p = new int;*p=5;
delete p;
delete p; //导致异常,一片空间不能被delete多次
3.用delete运算符释放动态分配的数组
用“delete”释放动态分配的数组,要加 []
delete[]指针;//该指针必须指向new出来的数组
int * p = new int[20];
p[0]= 1;
delete [] p;