C++動(dòng)態(tài)分配內(nèi)存
本文默認(rèn)已有C語言基礎(chǔ),理解內(nèi)存分區(qū),掌握malloc、calloc、realloc、free等C語言中的動(dòng)態(tài)內(nèi)存操作函數(shù)
動(dòng)態(tài)分配內(nèi)存
C++中動(dòng)態(tài)分配內(nèi)存方法與C語言中極為相似。
new
C++使用new運(yùn)算符進(jìn)行動(dòng)態(tài)分配內(nèi)存。不同之處在于:
- C語言必須使用
sizeof運(yùn)算符計(jì)算數(shù)據(jù)類型大小,而C++可自動(dòng)計(jì)算數(shù)據(jù)類型大小。 - C語言必須使用強(qiáng)制類型轉(zhuǎn)換,而C++不需要。
Type *指針名=new Type;//動(dòng)態(tài)申請(qǐng)單個(gè)變量
//C:Type *指針名=malloc(sizeof(Type));
Type *指針名=new Type[個(gè)數(shù)];//動(dòng)態(tài)申請(qǐng)數(shù)組
//C:Type *指針名=malloc(sizeof(Type)*個(gè)數(shù));
delete
C++使用delete運(yùn)算符釋放由new申請(qǐng)的內(nèi)存。不同之處在于:
- C語言對(duì)于單個(gè)變量、數(shù)組的釋放語法都是相同的,但C++需要明確用
[]區(qū)分。
注意delete釋放的只是動(dòng)態(tài)申請(qǐng)到的內(nèi)存,而指針是先前通過定義得到的,其仍然存在,后續(xù)仍可使用該指針。
delete 指針名;//釋放單個(gè)變量
delete []指針名;//釋放數(shù)組
//C:free(指針名);

浙公網(wǎng)安備 33010602011771號(hào)