溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++運(yùn)算符new、delete

發(fā)布時(shí)間:2020-08-07 17:23:35 來(lái)源:網(wǎng)絡(luò) 閱讀:606 作者:Dussssss 欄目:編程語(yǔ)言

在軟件開(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;
向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI