欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、什么是new和delete

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

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

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

通過上面的使用對(duì)比,我們可以很明顯的感覺到new和delete使用起來(lái)更加方便。因?yàn)槲覀冊(cè)谑褂胣ew動(dòng)態(tài)開辟空間時(shí),并不需要計(jì)算所開辟空間類型的大小。因?yàn)楹竺娓愋?,new會(huì)自動(dòng)計(jì)算出類型的大小。

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

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

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

new 和 malloc 的區(qū)別 :

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

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

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

相關(guān)文章

  • C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會(huì)保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission?Control?Protocol,它是位于網(wǎng)絡(luò)OSI模型中的第四層
    2022-09-09
  • 使用C語(yǔ)言實(shí)現(xiàn)模糊搜索功能

    使用C語(yǔ)言實(shí)現(xiàn)模糊搜索功能

    本文所提到的模糊搜索是指輸入不完整的關(guān)鍵詞即可查詢到對(duì)應(yīng)的全部準(zhǔn)確結(jié)果。下面小編通過實(shí)例代碼給大家分享使用C語(yǔ)言實(shí)現(xiàn)模糊搜索功能,感興趣的朋友一起看看吧
    2018-08-08
  • string,CString,char*之間的轉(zhuǎn)化

    string,CString,char*之間的轉(zhuǎn)化

    下面是MFC/C++/C中字符類型CString, int, string, char*之間的轉(zhuǎn)換的說明與舉例,經(jīng)常用的東西,相信對(duì)于用C/C++的朋友,還是比較有用的
    2013-03-03
  • C++中Boost的智能指針scoped_ptr

    C++中Boost的智能指針scoped_ptr

    這篇文章介紹了C++中Boost的智能指針scoped_ptr,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C++通過SQLiteSDK增刪改查的實(shí)現(xiàn)示例

    C++通過SQLiteSDK增刪改查的實(shí)現(xiàn)示例

    SQLite是一種輕量級(jí)的嵌入式數(shù)據(jù)庫(kù),可以利用SQLiteSDK執(zhí)行數(shù)據(jù)庫(kù)的增刪改查操作,本文主要介紹了C++通過SQLiteSDK增刪改查,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • C++中引用和const關(guān)鍵字介紹

    C++中引用和const關(guān)鍵字介紹

    大家好,本篇文章主要講的是C++中引用和const關(guān)鍵字介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • 詳解c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送

    詳解c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送

    這篇文章主要為大家詳細(xì)介紹了c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • C++函數(shù)重載的深入解析

    C++函數(shù)重載的深入解析

    在C++中,我們也能夠把具有相同功能的函數(shù)整合到一個(gè)函數(shù)上,而不必去寫好多個(gè)函數(shù)名不同的函數(shù),這叫做函數(shù)的重載。以下是對(duì)C++中的函數(shù)重載進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來(lái)參考下
    2013-07-07
  • C++中兩種字符串定義方式和區(qū)別介紹

    C++中兩種字符串定義方式和區(qū)別介紹

    大家好,本篇文章主要講的是C++中兩種字符串定義方式和區(qū)別介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++四種cast使用詳細(xì)介紹

    C++四種cast使用詳細(xì)介紹

    本文主要介紹了C++四種cast使用詳細(xì)介紹,今天我們要來(lái)講的是顯式類型轉(zhuǎn)換,C++提供了四種顯式類型轉(zhuǎn)換,分別是:static_cast、dynamic_cast、const_cast、reinterpret_cast,感興趣的可以了解一下
    2022-07-07

最新評(píng)論