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