溫馨提示×

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

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

C++ new和delete操作符

發(fā)布時(shí)間:2020-08-07 19:21:15 來(lái)源:ITPUB博客 閱讀:155 作者:tanghoeng 欄目:編程語(yǔ)言

在C語(yǔ)言中,動(dòng)態(tài)分配內(nèi)存用 malloc() 函數(shù),釋放內(nèi)存用 free() 函數(shù)。如下所示:

int *p = (int*) malloc( sizeof(int) * 10 );  //分配10個(gè)int型的內(nèi)存空間free(p);  //釋放內(nèi)存

在C++中,這兩個(gè)函數(shù)仍然可以使用,但是C++又新增了兩個(gè)關(guān)鍵字,new 和 delete:new 用來(lái)動(dòng)態(tài)分配內(nèi)存,delete 用來(lái)釋放內(nèi)存。

用 new 和 delete 分配內(nèi)存更加簡(jiǎn)單:

int *p = new int;  //分配1個(gè)int型的內(nèi)存空間delete p;  //釋放內(nèi)存

new 操作符會(huì)根據(jù)后面的數(shù)據(jù)類(lèi)型來(lái)推斷所需空間的大小。

如果希望分配一組連續(xù)的數(shù)據(jù),可以使用 new[]:

int *p = new int[10];  //分配10個(gè)int型的內(nèi)存空間delete[] p;

用 new[] 分配的內(nèi)存需要用 delete[] 釋放,它們是一一對(duì)應(yīng)的。

和 malloc() 一樣,new 也是在堆區(qū)分配內(nèi)存,必須手動(dòng)釋放,否則只能等到程序運(yùn)行結(jié)束由操作系統(tǒng)回收。為了避免內(nèi)存泄露,通常 new 和 delete、new[] 和 delete[] 操作符應(yīng)該成對(duì)出現(xiàn),并且不要和C語(yǔ)言中 malloc()、free() 一起混用。

https://www.ryw168.com/news/media/15116.html



https://www.ryw168.com/news/media/15118.html


向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