new與delete
阿新 • • 發佈:2019-01-28
c++中的new()與delete()和C語言中molloc()與free()相對應。
1、new
(1)用法
法1:
int *p;
p=new type;//其中type是型別,只分配堆記憶體。
法2:
int *p;
p=new type(x);//其中將分配到堆記憶體初始化為x;
法3:
int *p;
p=new type[n];//分配具有n個元素的陣列;
(2)如果分配不成功則返回空指標0,在程式中可以用0作為判斷記憶體分配成功與否的根據。
2、delete
(1)用法
法1:
int *p;
delete p;//用於釋放動態分配的單個指標變數。
法2:
int *p;
delete []p;//用於釋放動態分配的陣列儲存區域。
例如:
#include <iostream>
using namespace std;
int main()
{
int *p1;
p1=new int;
*p1=5;
cout<<"p1 address"<<p1<<"值"<<*p1<<endl;
delete p1;
int *p2;
p2=new int(10 );//這裡相當於*p2=10;
cout<<"p2 address"<<p2<<"值"<<*p2<<endl;
delete p2;
int *p3;
p3=new int[10];
*p3=1;
p3[1]=2;
p3[2]=3;
cout<<"p3[0] address"<<p3<<"值"<<*p3<<endl;//這裡不能改為p3[0];
cout<<"p3[1] address"<<&p3[1 ]<<"值"<<p3[1]<<endl;
delete []p3;
return 0;
}
3、一片空間不能被delete多次。