最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ 中的new 和 delete 運算符及new和malloc的區(qū)別解析

 更新時間:2024年11月14日 14:42:21   作者:wqyc++  
在C++中,又引出了一個新玩法:new 和 delete,在C++中,new是用來動態(tài)開辟內(nèi)存的,delete是用來釋放我們所動態(tài)開辟的內(nèi)存C++中的new和delete運算符及new和malloc的區(qū)別解析,感興趣的朋友跟隨小編一起看看吧

一、什么是new和delete

我們知道在C語言中,動態(tài)開辟內(nèi)存的方法是使用:malloc/calloc/realloc。釋放動態(tài)開辟的內(nèi)存是free。在C++中,又引出了一個新玩法:new 和 delete。在C++中,new是用來動態(tài)開辟內(nèi)存的,delete是用來釋放我們所動態(tài)開辟的內(nèi)存。

在C語言中,對內(nèi)置類型的動態(tài)開辟我們經(jīng)常使用的函數(shù)是malloc函數(shù)。在C++中,我們也可以使用new操作符來動態(tài)申請空間。注意:我們這里發(fā)現(xiàn)了malloc 和 new 的第一個區(qū)別,malloc是函數(shù),new是一個操作符。當然,成對出現(xiàn)的free 是函數(shù),delete 是操作符。我們先看其實用方法的對比,代碼如下:

void Test()
{
    // 動態(tài)申請一個int類型的空間
    int* p1 = malloc(sizeof(int));
    int* p2 = new int;
    // 動態(tài)申請一個int類型的空間并初始化為10
    int* p3 = malloc(sizeof(int));
    *p3 = 10;
    int* p4 = new int(10);
    // 動態(tài)申請10個int類型的空間
    int* p5 = malloc(sizeof(int) * 3);
    int* p6 = new int[3];
    //釋放
    free(p1);
    delete p2;
    free(p3);
    delete p4;
    free(p5);
    delete[] p6;
}

通過上面的使用對比,我們可以很明顯的感覺到new和delete使用起來更加方便。因為我們在使用new動態(tài)開辟空間時,并不需要計算所開辟空間類型的大小。因為后面跟著類型,new會自動計算出類型的大小。

我們還發(fā)現(xiàn),new在動態(tài)開辟內(nèi)存時,還可以對其進行初始化。而malloc開辟后,才可通過解引用對其進行初始化。new在動態(tài)開辟數(shù)組時,也可對其進行初始化,但是這只是C++11才開始支持的語法,用法如下:

    int* p6 = new int[10]{1,2,3};
    delete[] p6;
    //后面沒有給出的值,會自動初始化為0。

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

new 和 malloc 的區(qū)別 :

1.malloc 是c語言庫函數(shù),new是運算符。
2.malloc 返回值必須強制類型轉(zhuǎn)換,new的返回值不需要。
3.malloc 必須傳入具體字節(jié)個數(shù),new傳入變量個數(shù)或者變量本身。 
4.malloc 申請失敗會返回空,new會拋出異常。
5.使用new創(chuàng)建一個類的對象時會先調(diào)用malloc分配空間,然后再調(diào)用構(gòu)造函數(shù)給成員變量賦值。   

6.在給自定義類申請空間時new和delete會自動調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)。

到此這篇關(guān)于C++ 中的new 和 delete 運算符及new和malloc的區(qū)別解析的文章就介紹到這了,更多相關(guān)c++ new 和 delete 運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++獲取主機網(wǎng)卡MAC地址的三方法

    C/C++獲取主機網(wǎng)卡MAC地址的三方法

    MAC地址(Media Access Control address),又稱為物理地址或硬件地址,是網(wǎng)絡(luò)適配器(網(wǎng)卡)在制造時被分配的全球唯一的48位地址,通過獲取MAC地址可以判斷當前主機的唯一性可以與IP地址綁定并實現(xiàn)網(wǎng)絡(luò)準入控制,本文給大家介紹了使用C/C++獲取主機網(wǎng)卡MAC地址的三方法
    2023-11-11
  • 基于C++實現(xiàn)柏林噪聲算法(Perlin?Noise)

    基于C++實現(xiàn)柏林噪聲算法(Perlin?Noise)

    Perlin噪聲(Perlin?noise,又稱為柏林噪聲)指由Ken?Perlin發(fā)明的自然噪聲生成算法,具有在函數(shù)上的連續(xù)性,并可在多次調(diào)用時給出一致的數(shù)值。本文將用C++實現(xiàn)柏林噪聲算法,感興趣的可以了解一下
    2023-03-03
  • C語言malloc與calloc區(qū)別詳解

    C語言malloc與calloc區(qū)別詳解

    本文主要介紹了C語言malloc與calloc區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • C++實現(xiàn)基數(shù)排序的方法詳解

    C++實現(xiàn)基數(shù)排序的方法詳解

    本篇文章是對使用C++實現(xiàn)基數(shù)排序的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ 匈牙利算法案例分析詳解

    C++ 匈牙利算法案例分析詳解

    這篇文章主要介紹了C++ 匈牙利算法案例分析詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 解析C++中的for循環(huán)以及基于范圍的for語句使用

    解析C++中的for循環(huán)以及基于范圍的for語句使用

    這篇文章主要介紹了解析C++中的for循環(huán)以及基于范圍的for語句使用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • 淺談Qt信號與槽的各種連接方式

    淺談Qt信號與槽的各種連接方式

    信號和槽是Qt特有的信息傳輸機制,本文主要介紹了淺談Qt信號與槽的各種連接方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C語言運用回調(diào)函數(shù)實現(xiàn)計算器

    C語言運用回調(diào)函數(shù)實現(xiàn)計算器

    這篇文章主要為大家詳細介紹了C語言運用回調(diào)函數(shù)實現(xiàn)計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • C++實現(xiàn)動態(tài)順序表

    C++實現(xiàn)動態(tài)順序表

    這篇文章主要為大家詳細介紹了C++實現(xiàn)動態(tài)順序表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C++中static和const的作用和用法

    C++中static和const的作用和用法

    在C++中,"static"和"const"都是用于修飾變量的關(guān)鍵字,它們具有不同的作用,本文通過代碼示例給大家詳細的介紹static和const的作用和用法,,需要的朋友可以參考下
    2023-06-06

最新評論

琼结县| 柳江县| 嵊州市| 荆门市| 黄浦区| 京山县| 东源县| 日喀则市| 南汇区| 丹江口市| 湖南省| 淄博市| 太仓市| 成武县| 田阳县| 星子县| 四平市| 白河县| 英德市| 侯马市| 湟中县| 高平市| 六枝特区| 巴里| 杨浦区| 四平市| 黔西县| 恩平市| 铜鼓县| 巩留县| 兰州市| 晋江市| 化德县| 益阳市| 合阳县| 大石桥市| 仁布县| 靖宇县| 荔波县| 巨野县| 山东|