动态内存分配
第一种用法
p = new T;
T 是任意类型的名字, p是类型为 T * 的指针
动态分配出一片大小为 sizeof(T) 的内存空间大小,并把起始地址赋给p, 例如
int * pn;
pn = new int;
* pn = 5;
第二种用法
p = new T[N];
T 为类型名,
p 类型为 T* 的指针
N 要分配数组元素的个数,可以是整型表达式
动态分配出一片 N*sizeof(T) 字节的内存空间大小,并把首地址赋给p,例如:
int * pn;
int i = 5;
pn = new int[i*20];
pn[0] = 20;
pn[100] = 30; //可能会越界
delete 释放内存
new 出来的动态内存一定要用delete释放
释放单个变量的动态内存
delete 指针; // 该指针必须指向new出来的空间
int *p = new int;
* p = 5;
delete p;
delete p; // 异常,一片空间不能被delete多次
释放动态分配的数组
delete []指针; // 该指针必须指向new出来的数组
int *p = new int[20];
p[0] = 1;
delete []p;