您好,登錄后才能下訂單哦!
在軟件開(kāi)發(fā)中過(guò)程中,常常需要?jiǎng)討B(tài)地分配和撤銷內(nèi)存空間,例如對(duì)動(dòng)態(tài)鏈表中結(jié)點(diǎn)的插入與刪除。
new int; //開(kāi)辟一個(gè)存放整數(shù)的存儲(chǔ)空間,返回一個(gè)指向該存儲(chǔ)空間的地址(即指針)。
new int(100); //指定該整數(shù)的初值為100
new char[10]; //包含10個(gè)字符的空間
new int[5][4]; //二維數(shù)組(5*4)
float *p=new float(3.14159); //地址賦給指針變量p
new 運(yùn)算符使用的一般格式為
new 類型[初值];//用new分配數(shù)組空間時(shí)不能指定初值。如果由于內(nèi)存不足等原因而無(wú)法正常分配空間,則new會(huì)返回一個(gè)空指針NULL,用戶可以根據(jù)該指針的值判斷分配空間是否成功。
delete運(yùn)算符使用的一般格式為
delete[ ]指針變量;
delete p;
delete [ ]pt; //在指針變量面前加一對(duì)方括號(hào),表示對(duì)數(shù)組空間的操作。
對(duì)象的動(dòng)態(tài)建立和釋放
定義的對(duì)象是靜態(tài)的話,在程序運(yùn)行過(guò)程中,對(duì)象所占的空間是不能隨時(shí)釋放的。例如在一個(gè)函數(shù)定義了一個(gè)對(duì)象,只有在該函數(shù)結(jié)束時(shí),該對(duì)象才釋放。但有時(shí)人們希望在需要用到對(duì)象時(shí)才建立對(duì)象,在不需要用該對(duì)象時(shí)就撤銷它,釋放它所占的內(nèi)存空間以供別的數(shù)據(jù)使用。這樣可以提高內(nèi)存空間的利用率。
class Box{
private:
int height;
int width;
int length;
public:
Box();
Box(int,int,int);
~Box();
Box(Box &b);
void volume();
};
new Box; //動(dòng)態(tài)建立一個(gè)對(duì)象
Box *pt; //定義一個(gè)指向Box對(duì)象的指針變量pt
pt=new Box; //在pt中存放了新建對(duì)象的起始地址
pt-->height; //調(diào)用對(duì)象的height成員
pt-->volume(); //調(diào)用對(duì)象的volume函數(shù)
Box *pt=new Box(12,15,18);
//釋放內(nèi)存空間
delete pt;
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。