1. 程式人生 > >C++運算符new、delete

C++運算符new、delete

C++

在軟件開發中過程中,常常需要動態地分配和撤銷內存空間,例如對動態鏈表中結點的插入與刪除。

new int;  //開辟一個存放整數的存儲空間,返回一個指向該存儲空間的地址(即指針)。
new int(100); //指定該整數的初值為100
new char[10]; //包含10個字符的空間
new int[5][4]; //二維數組(5*4)
float *p=new float(3.14159); //地址賦給指針變量p

new 運算符使用的一般格式為
new 類型[初值];//用new分配數組空間時不能指定初值。如果由於內存不足等原因而無法正常分配空間,則new會返回一個空指針NULL,用戶可以根據該指針的值判斷分配空間是否成功。

delete運算符使用的一般格式為
delete[ ]指針變量;

delete p;
delete [ ]pt; //在指針變量面前加一對方括號,表示對數組空間的操作。

對象的動態建立和釋放
定義的對象是靜態的話,在程序運行過程中,對象所占的空間是不能隨時釋放的。例如在一個函數定義了一個對象,只有在該函數結束時,該對象才釋放。但有時人們希望在需要用到對象時才建立對象,在不需要用該對象時就撤銷它,釋放它所占的內存空間以供別的數據使用。這樣可以提高內存空間的利用率。

class Box{
private:
    int height;
    int width;
    int length;
public:
    Box();
    Box(int,int,int);
    ~Box();
    Box(Box &b);
    void volume();
};
new Box;           //動態建立一個對象
Box *pt;             //定義一個指向Box對象的指針變量pt
pt=new Box;      //在pt中存放了新建對象的起始地址
pt-->height;       //調用對象的height成員
pt-->volume();   //調用對象的volume函數
Box *pt=new Box(12,15,18);

//釋放內存空間
delete pt;

C++運算符new、delete