您好,登錄后才能下訂單哦!
在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
免責(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)容。