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

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

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

一、什么是new和delete

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

在C語言中,對內置類型的動態(tài)開辟我們經常使用的函數(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)開辟內存時,還可以對其進行初始化。而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 返回值必須強制類型轉換,new的返回值不需要。
3.malloc 必須傳入具體字節(jié)個數(shù),new傳入變量個數(shù)或者變量本身。 
4.malloc 申請失敗會返回空,new會拋出異常。
5.使用new創(chuàng)建一個類的對象時會先調用malloc分配空間,然后再調用構造函數(shù)給成員變量賦值。   

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

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

相關文章

  • C/C++獲取主機網卡MAC地址的三方法

    C/C++獲取主機網卡MAC地址的三方法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    這篇文章主要為大家詳細介紹了C語言運用回調函數(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"都是用于修飾變量的關鍵字,它們具有不同的作用,本文通過代碼示例給大家詳細的介紹static和const的作用和用法,,需要的朋友可以參考下
    2023-06-06

最新評論

宁武县| 贵溪市| 杭锦旗| 颍上县| 井研县| 泰州市| 玉龙| 宿松县| 新建县| 厦门市| 始兴县| 玛曲县| 云梦县| 东至县| 大荔县| 洞头县| 社会| 罗源县| 两当县| 将乐县| 府谷县| 突泉县| 洞口县| 平果县| 麻栗坡县| 渭源县| 大庆市| 徐汇区| 临沭县| 莲花县| 镇江市| 获嘉县| 湘阴县| 分宜县| 辽宁省| 凌海市| 辽阳县| 车险| 岐山县| 正安县| 高青县|