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 :要分配的数组元 素的个数,可以是整型表达式。
动态分配出一片大小为 sizeof(T)*N字节的内存空间,并且将该内存空间的起始地址赋值给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”释放动态分配的数组,要加“[]”
delete [ ] 指针;//该指针必须指向new出来的数组
例:
int * p = new int[20];
p[0] = 1;
delete [ ] p;