
在c语言中,我们常常使用malloc来进行动态内存分配,在c++我们学习一种新的运算符 new;
new的用法 1.分配一个变量P=new T;
T是任意类型名,P是类型为 T *的指针。
动态分配出一片大小为sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。比如:
2.分配一个数组int * pn;
pn=new int;
* pn=5;
P=new T[N];
T :任意类型名
P :类型为 T * 的指针
N : 要分配的数组元素的个数,可以是整型表达式
动态分配出一片大小为 N*sizeof(T)字节的内存空间,并且将该内存空间的起始地址赋值给P。
new 运算符的返回值类型int * pn;
int i=5;
pn=new int [i*20];
p[0]=20;
pn[100]=30;//编译没问题,运行时导致数组越界
new T;
new T[n];
这两个表达式返回值的类型都是 T *
记住 new 运算符返回的值是指针
用delete运算符释放动态分配的内存用 “new” 动态分配的内存空间,一定要用“delete”运算符进行释放
delete 指针;//该指针必须指向new出来的空间
用delete运算符释放动态分配的数组int * p=new int;
* p=5;
delete p;
delete p; // 导致异常,一片空间不能被delete多次
用“delete”运算符释放动态分配的数组,要加“[ ]”
delete [ ] 指针;//该指针必须指向new出来的数组
int * p=new int [20];
p[0]=1;
delete [ ]p;
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)