国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++動(dòng)態(tài)內(nèi)存開辟與釋放new和delete

這篇具有很好參考價(jià)值的文章主要介紹了C++動(dòng)態(tài)內(nèi)存開辟與釋放new和delete。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??博主主頁(yè):@??. 一懷明月??

?????專欄系列:線性代數(shù),C初學(xué)者入門訓(xùn)練,題解C,C的使用文章,「初學(xué)」C++,數(shù)據(jù)結(jié)構(gòu)

??座右銘:“不要等到什么都沒有了,才下定決心去做”

??????大家覺不錯(cuò)的話,就懇求大家點(diǎn)點(diǎn)關(guān)注,點(diǎn)點(diǎn)小愛心,指點(diǎn)指點(diǎn)??????

??new和delete?

new和delete運(yùn)算符是C++管理內(nèi)存的方式,在C語言里實(shí)現(xiàn)近似功能的函數(shù)是malloc和free。

malloc函數(shù)原型:

void* malloc(int size);

向系統(tǒng)申請(qǐng)分配指定的size字節(jié)的內(nèi)存空間,返回類型是void*類型

free函數(shù)原型:

void free(void* block);

把block所指向的空間釋放。形參是void*類型,所以free可以釋放任意類型的指針

C語言的內(nèi)存管理是通過函數(shù)進(jìn)行的,優(yōu)點(diǎn)缺點(diǎn)如下:

(1)函數(shù)返回值是void*類型,在將這個(gè)地址給指針進(jìn)行賦值時(shí),必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

(2)分配內(nèi)存單元時(shí)根據(jù)參數(shù)size的值來分配的,如果size是錯(cuò)誤的,系統(tǒng)仍然分配單元,無法檢查出錯(cuò)誤。

C++提供了簡(jiǎn)便而功能較強(qiáng)的運(yùn)算符new和delete。

new是C++新增的用來用來動(dòng)態(tài)申請(qǐng)內(nèi)存的運(yùn)算符,它的作用是申請(qǐng)到一段指定數(shù)據(jù)類型大小的內(nèi)存。

使用格式:

指針變量 =new 數(shù)據(jù)類型;

使用new分配整形內(nèi)存單元:

#include<iostream>
using namespace std;
int main()
{
? ? int* p=nullptr;
? ? p=new int;//new將申請(qǐng)一個(gè)整形的內(nèi)存空間,將這個(gè)內(nèi)存空間的首地址存放到指針變量p中
? ? cout<<*p<<endl;
? ? return 0;
}
結(jié)果:0
向內(nèi)存動(dòng)態(tài)申請(qǐng)了一整形空間,因?yàn)闆]有給空間賦值,所以里面是隨機(jī)值,這里是0

使用new申請(qǐng)內(nèi)存更加方便,而且new返回所申請(qǐng)數(shù)據(jù)類型的指針,再將內(nèi)存的首地址給指針p時(shí)不需要強(qiáng)制類型轉(zhuǎn)換

通過new運(yùn)算符申請(qǐng)的內(nèi)存單元是當(dāng)程序運(yùn)行到包含new語句時(shí)才分配的,稱為動(dòng)態(tài)內(nèi)存的分配,這是堆上申請(qǐng)的空間,除非程序退出,才會(huì)把內(nèi)存歸還給系統(tǒng)。所以必須自己去釋放通過new得到的內(nèi)存單元

與new對(duì)應(yīng)的釋放內(nèi)存空間運(yùn)算符是delete,使用delete的格式如下:

delete 指針變量;

delete將釋放指針?biāo)赶虻膬?nèi)存單元:

#include<iostream>
using namespace std;
int main()
{
? ? int* p=nullptr;
? ? p=new int;//new將申請(qǐng)一個(gè)整形的內(nèi)存空間,將這個(gè)內(nèi)存空間的首地址存放到指針變量p中
? ? cout<<*p<<endl;
? ? delete p;//delete將釋放p所指向的內(nèi)存單元
? ? p=nullptr;
? ? return 0;
}

new也可以在申請(qǐng)內(nèi)存空間的同時(shí)對(duì)該內(nèi)存空間進(jìn)行初始化

指針變量=new 數(shù)據(jù)類型(初值);//傳統(tǒng)圓括號(hào)初始形式
指針變量=new 數(shù)據(jù)類型{初值};//C++11引入的列表初始化
例如:
int* p=new int(520);
int* p=new int{520};

new和delete除了用于分配和釋放單個(gè)變量的空間。還可以分配和釋放連續(xù)變量的存儲(chǔ)空間。例如申請(qǐng)一個(gè)數(shù)組空間,使用new[]和delete[]

new[]

指針變量=new 數(shù)據(jù)類型[元素個(gè)數(shù)];
int* p=new int[10];
可以申請(qǐng)存放20個(gè)整數(shù)的連續(xù)空間

delete[]

delete []指針變量;
delete []p;
p=nullptr;

???????如果大家還有不懂或者建議都可以發(fā)在評(píng)論區(qū),我們共同探討,共同學(xué)習(xí),共同進(jìn)步。謝謝大家! ???????文章來源地址http://www.zghlxwxcb.cn/news/detail-437967.html

到了這里,關(guān)于C++動(dòng)態(tài)內(nèi)存開辟與釋放new和delete的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++】——內(nèi)存管理(new和delete)

    【C++】——內(nèi)存管理(new和delete)

    在學(xué)習(xí)C語言的時(shí)候,我們學(xué)習(xí)了動(dòng)態(tài)內(nèi)存管理,也就是在堆上動(dòng)態(tài)開辟一些內(nèi)存供我們使用,雖然C語言內(nèi)存管理的方法在C++中也可以使用,但還有一些地方是他無能為力的,所以我們今天來學(xué)習(xí)C++內(nèi)存管理的方式。 在學(xué)習(xí)內(nèi)存管理之前,我們先來認(rèn)識(shí)一下C/C++中程序內(nèi)存區(qū)

    2024年02月06日
    瀏覽(26)
  • C++內(nèi)存管理(new和delete)

    C++內(nèi)存管理(new和delete)

    目錄 1. new/delete操作內(nèi)置類型 2. new和delete操作自定義類型 3. operator new與operator delete函數(shù)? 4 .new和delete的實(shí)現(xiàn)原理 1 .內(nèi)置類型 2 .自定義類型 new的原理 delete的原理 new T[N]的原理 delete[]的原理 5. 定位new表達(dá)式(placement-new) 6. malloc/free和new/delete的區(qū)別 7.內(nèi)存泄漏 內(nèi)存泄漏分類 8.如

    2024年02月02日
    瀏覽(18)
  • C++內(nèi)存管理(2)new、delete詳解

    C++內(nèi)存管理(2)new、delete詳解

    目錄 new operator(new操作) new類對(duì)象時(shí)加不加括號(hào)的差別 new工作任務(wù) delete工作任務(wù) new和delete 堆區(qū)空間操作(對(duì)比malloc和free) new和delete操作基本類型的空間 new和delete操作基本類型的數(shù)組 new和delete操作類的空間 new和delete操作對(duì)象數(shù)組 new內(nèi)存分配細(xì)節(jié)探秘 為什么要盡可能少的

    2024年02月09日
    瀏覽(23)
  • C++如何進(jìn)行內(nèi)存管理 (new、delete)

    C++如何進(jìn)行內(nèi)存管理 (new、delete)

    我成功是因?yàn)槲矣袥Q心,從不躊躇?!闷苼? 本章是關(guān)于c++內(nèi)存管理的文章,字?jǐn)?shù)不多,內(nèi)容簡(jiǎn)單,希望對(duì)你有所幫助??! 話不多說安全帶系好,發(fā)車?yán)?(建議電腦觀看) 。 附:紅色,部分為重點(diǎn)部分;藍(lán)顏色為需要記憶的部分(不是死記硬背哈,多敲);黑色加粗或

    2024年02月08日
    瀏覽(58)
  • 【C++破局】C++內(nèi)存管理之new與deleted剖析

    【C++破局】C++內(nèi)存管理之new與deleted剖析

    ??lovewold少個(gè)r博客主頁(yè) ? ? ?? 本文重點(diǎn) : c++內(nèi)存管理部分知識(shí)點(diǎn)梳理 ?? 【C-C++入門系列專欄】 : 博客文章專欄傳送門 ?? 每日一言 :花有重開日,人無再少年! C/C++的內(nèi)存分配機(jī)制 內(nèi)存分區(qū) 1. 內(nèi)核空間(Kernel Space): 2. 棧空間(Stack): 3. 內(nèi)存映射段(Memory Mapp

    2024年02月05日
    瀏覽(25)
  • 【C++】C/C++內(nèi)存管理-new、delete

    【C++】C/C++內(nèi)存管理-new、delete

    ヾ(????)?\\\" 人總要為過去的懶惰而付出代價(jià) ヾ(????)?\\\" 代碼展示: 棧區(qū) :局部變量 sizeof(數(shù)組名):整個(gè)數(shù)組的大小 sizeof(字符串):注意‘\\0’ 棧又叫堆棧–非靜態(tài)局部變量/函數(shù)參數(shù)/返回值等等,棧是向下增長(zhǎng)的。 內(nèi)存映射段是高效的I/O映射方式,用于裝載

    2024年02月11日
    瀏覽(20)
  • 【C++初階】七、內(nèi)存管理(C/C++內(nèi)存分布、C++內(nèi)存管理方式、operator new / delete 函數(shù)、定位new表達(dá)式)

    【C++初階】七、內(nèi)存管理(C/C++內(nèi)存分布、C++內(nèi)存管理方式、operator new / delete 函數(shù)、定位new表達(dá)式)

    ========================================================================= 相關(guān)代碼gitee自取 : C語言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 【C++初階】六、類和對(duì)象(初始化列表、static成員、友元、內(nèi)部類)-CSDN博客 ?==================

    2024年02月05日
    瀏覽(23)
  • 【C/C++】基礎(chǔ)知識(shí)之動(dòng)態(tài)申請(qǐng)內(nèi)存空間new-delete

    【C/C++】基礎(chǔ)知識(shí)之動(dòng)態(tài)申請(qǐng)內(nèi)存空間new-delete

    創(chuàng)作不易,本篇文章如果幫助到了你,還請(qǐng)點(diǎn)贊 關(guān)注支持一下???)!! 主頁(yè)專欄有更多知識(shí),如有疑問歡迎大家指正討論,共同進(jìn)步! ??c++系列專欄:C/C++零基礎(chǔ)到精通 ?? 給大家跳段街舞感謝支持!? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c語言內(nèi)容??:

    2024年02月07日
    瀏覽(29)
  • 【C++入門】new和delete(C/C++內(nèi)存管理)

    【C++入門】new和delete(C/C++內(nèi)存管理)

    1.C/C++內(nèi)存分布 我們先來看一個(gè)小問題: 問題: 下面我們就來簡(jiǎn)單分析一下: 首先 globalVar 是一個(gè)全局變量,其次 staticGlobalVar 是一個(gè)靜態(tài)全局變量, staticVar 是靜態(tài)局部變量,都在靜態(tài)區(qū)(數(shù)據(jù)段)。最后 localVar 是個(gè)局部變量, num1 是個(gè)整型數(shù)組,那它們是在棧上的。 ch

    2024年02月11日
    瀏覽(19)
  • 【C++干貨基地】深度理解C++中的高效內(nèi)存管理方式 new & delete

    【C++干貨基地】深度理解C++中的高效內(nèi)存管理方式 new & delete

    ?? 鴿芷咕 :個(gè)人主頁(yè) ??? 個(gè)人專欄 : 《C++干貨基地》《粉絲福利》 ??生活的理想,就是為了理想的生活! ??哈嘍各位鐵汁們好啊,我是博主鴿芷咕《C++干貨基地》是由我的襄陽(yáng)家鄉(xiāng)零食基地有感而發(fā),不知道各位的城市有沒有這種實(shí)惠又全面的零食基地呢?C++ 本身作

    2024年04月26日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包