1. 程式人生 > >new與delete

new與delete

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多次。