欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

深入理解C++的new和delete

一、C++中的動態(tài)內(nèi)存管理方式

C語言中的動態(tài)管理方式是用malloc、free函數(shù),它們在C++仍然可以繼續(xù)使用,但是由于在部分地方略顯無能為力,且使用起來比較麻煩,所以C++提出了自己的內(nèi)存管理方式:采用new、delete關鍵字去進行動態(tài)內(nèi)存管理。

十多年建站經(jīng)驗, 網(wǎng)站制作、網(wǎng)站設計客戶的見證與正確選擇。成都創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。

注意:C語言開辟空間所用的malloc、calloc、free等,這些都屬于函數(shù),但是C++所使用的new和delete是關鍵字(或者說是運算符),這一點是本質(zhì)上的區(qū)別。

二、new和malloc的區(qū)別

① malloc是按字節(jié)開辟內(nèi)存,返回值類型是void*,需要對返回值類型進行強轉(zhuǎn),只管開辟內(nèi)存,不進行初始化。初始化操作需要額外書寫。

而new在堆中開辟內(nèi)存時不僅可以指定其類型,還可以進行內(nèi)存初始化的操作。

② malloc內(nèi)存開辟是否成功是通過返回值與空指針nullptr去比較;

而new開辟內(nèi)存是否成功,是通過是否拋出bad_alloc類型的異常來判斷的。

當new申請內(nèi)存失敗時,會拋出bad_alloc異常,那么我們該如何去捕獲異常、如何去處理呢?

這里有篇文章可供參考:https://blog.csdn.net/qq_/article/details/

 1 #include<iostream>
 2 
 3 using namespace std;
 4 
 5 int main() 
 6 {   
 7     // malloc開辟int類型變量的內(nèi)存空間
 8     int *p = (int*)malloc(sizeof(int));
 9     if(p == nullptr) 
10     {
11         return -1;
12     }
13     *p = 20;
14     free(p);
15 
16     // new開辟int類型變量的內(nèi)存空間
17     int *p1 = new int (20);     // int *p1 = new int (); 和 int *p1 = new int; 表示*p1初始值為0
18     delete p1;
19     
20     /**********************************************************/
21     
22     // malloc開辟int類型數(shù)組的內(nèi)存空間
23     int *q = (int*)malloc(sizeof(int) * 20);
24     if(q == nullptr) 
25     {
26         return -1;
27     }
28     free(q);
29 
30     // new開辟int類型數(shù)組的內(nèi)存空間
31     int *q1 = new int[20]();    // 20個 int sizeof(int) * 20
32     // int *q1 = new int[20];  表示將數(shù)值全部初始化為0
33     delete [] q1;   // 注意這里[]放在q1前面!??!
34 
35     return 0;
36 }

文章標題:深入理解C++的new和delete
標題路徑:http://chinadenli.net/article24/dsoiije.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站微信公眾號、品牌網(wǎng)站建設、自適應網(wǎng)站、做網(wǎng)站、網(wǎng)站導航

廣告

聲明:本網(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)

網(wǎng)站優(yōu)化排名