C語(yǔ)言中動(dòng)態(tài)內(nèi)存管理函數(shù):malloc /?realloc / calloc / free
C++中動(dòng)態(tài)內(nèi)存管理操作符:new / new T[N] / delete / delete[]
void TestC()
{
int* p1 = (int*)malloc(sizeof(int));
free(p1);
int* p2 = (int*)calloc(4, sizeof (int));
int* p3 = (int*)realloc(p2, sizeof(int)*10);
p2 = NULL;
free(p3);
}
void TestC++()
{
?//動(dòng)態(tài)申請(qǐng)一個(gè)int類型的空間
?int* ptr4 = new int;
?
?//動(dòng)態(tài)申請(qǐng)一個(gè)int類型的空間并初始化為666
?int* ptr5 = new int(666);
?
?//動(dòng)態(tài)申請(qǐng)10個(gè)int類型的連續(xù)空間
?int* ptr6 = new int[3];
?delete ptr4;
?delete ptr5;
?delete[] ptr6;
}
new / delete 操作符均屬于運(yùn)算符重載,調(diào)用全局函數(shù) operator new 和 operator delete 非必要不重載。
共同點(diǎn):都是從堆上申請(qǐng)空間,并且需要用戶手動(dòng)釋放。
不同點(diǎn):
1.malloc和free是i函數(shù),new和delete是操作符。
2. malloc申請(qǐng)的空間不會(huì)初始化,new可以初始化。
3.malloc申請(qǐng)空間時(shí),需要手動(dòng)計(jì)算空間大小并傳遞,new只需在其后跟上空間的類型即可,如果是多個(gè)對(duì)象,中指定對(duì)象個(gè)數(shù)即可。
4. malloc的返回值為void*,在使用時(shí)必須強(qiáng)轉(zhuǎn),new不需要,因?yàn)閚ew后跟的是空間的類型。
5. malloc申請(qǐng)空間失敗時(shí),返回的是NULL,因此使用時(shí)必須判空,new不需要,但是new需要捕獲異常。
6.申請(qǐng)自定義類型對(duì)象時(shí),malloc/free只會(huì)開辟空間,不會(huì)調(diào)用構(gòu)造函數(shù)與析構(gòu)函數(shù),而new
在申請(qǐng)空間后會(huì)調(diào)用構(gòu)造函數(shù)完成對(duì)象的初始化,delete在釋放空間前會(huì)調(diào)用析構(gòu)函數(shù)完成空間中資源的清理。(大區(qū)別)
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
分享標(biāo)題:C++new和delete操作符-創(chuàng)新互聯(lián)
URL鏈接:http://chinadenli.net/article34/ephpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、外貿(mào)建站、建站公司、企業(yè)建站、營(yíng)銷型網(wǎng)站建設(shè)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)