最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:C ++中用于動(dòng)態(tài)內(nèi)存的new和delete運(yùn)算符

2021-02-02 22:24 作者:C語(yǔ)言編程__Plus  | 我要投稿

C / C ++中的動(dòng)態(tài)內(nèi)存分配是指程序員手動(dòng)執(zhí)行內(nèi)存分配。動(dòng)態(tài)分配的內(nèi)存在堆上分配,非靜態(tài)和局部變量在堆棧上分配內(nèi)存。


有什么應(yīng)用?

動(dòng)態(tài)分配內(nèi)存的一種用途是分配可變大小的內(nèi)存,而可變長(zhǎng)度數(shù)組除外,這是編譯器分配的內(nèi)存無(wú)法實(shí)現(xiàn)的。

最重要的用途是為程序員提供了靈活性。無(wú)論何時(shí)需要和不再需要,我們都可以自由分配和取消分配內(nèi)存。在許多情況下,這種靈活性會(huì)有所幫助。此類情況的示例是“鏈表”,“樹(shù)”等。

它與分配給普通變量的內(nèi)存有何不同?

對(duì)于“ int a”,“ char str [10]”等常規(guī)變量,將自動(dòng)分配和釋放內(nèi)存。對(duì)于動(dòng)態(tài)分配的內(nèi)存,例如“ int * p = new int [10]”,程序員有責(zé)任在不再需要時(shí)釋放內(nèi)存。如果程序員不釋放內(nèi)存,則會(huì)導(dǎo)致內(nèi)存泄漏(在程序終止之前不會(huì)釋放內(nèi)存)。

如何在C ++中分配/取消分配內(nèi)存?

C使用malloc()和calloc()函數(shù)在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存,并使用free()函數(shù)釋放動(dòng)態(tài)分配的內(nèi)存。C ++支持這些功能,并且還有兩個(gè)newDelete運(yùn)算符,它們以更好和更輕松的方式執(zhí)行分配和釋放內(nèi)存的任務(wù)。

本文全部涉及new和delete運(yùn)算符。

new 運(yùn)算符

新的運(yùn)算符表示在免費(fèi)存儲(chǔ)上分配內(nèi)存的請(qǐng)求。如果有足夠的內(nèi)存可用,則new運(yùn)算符將初始化該內(nèi)存,并將新分配和初始化的內(nèi)存的地址返回給指針變量。

使用new運(yùn)算符的語(yǔ)法:要分配任何數(shù)據(jù)類型的內(nèi)存,語(yǔ)法為:

pointer-variable =new?data-type;

這里,pointer-variable是data-type類型的指針。數(shù)據(jù)類型可以是任何內(nèi)置數(shù)據(jù)類型,包括數(shù)組,也可以是任何用戶定義的數(shù)據(jù)類型,包括結(jié)構(gòu)和類。

int *p = NULL;

p = new int;?

初始化內(nèi)存:我們還可以使用new運(yùn)算符來(lái)初始化內(nèi)存:

指針變量?=newdata-type(value);

int *p = new int(25);

float *q = new float(75.25);

分配內(nèi)存塊:?new運(yùn)算符還用于分配data-type類型的內(nèi)存塊(數(shù)組)。

指針變量 =new?data-type[size];

其中size(一個(gè)變量)指定數(shù)組中元素的數(shù)量。

int *p = new int[10]

為int類型的10個(gè)整數(shù)連續(xù)動(dòng)態(tài)分配內(nèi)存,并將指針?lè)祷氐叫蛄械牡谝粋€(gè)元素,該元素分配給p(一個(gè)指針)。p [0]表示第一個(gè)元素,p [1]表示第二個(gè)元素,依此類推。


普通數(shù)組聲明與使用new

聲明普通數(shù)組與使用new分配內(nèi)存塊之間有區(qū)別。最重要的區(qū)別是,常規(guī)數(shù)組由編譯器釋放(如果數(shù)組是本地?cái)?shù)組,則在函數(shù)返回或完成時(shí)釋放)。但是,動(dòng)態(tài)分配的數(shù)組始終保留在那里,直到程序員將其釋放或程序終止為止。

如果運(yùn)行時(shí)沒(méi)有足夠的內(nèi)存怎么辦?

如果堆中沒(méi)有足夠的內(nèi)存來(lái)分配,則新請(qǐng)求將拋出std :: bad_alloc類型的異常,以指示失敗,除非new操作符使用了“ nothrow”,在這種情況下它將返回NULL指針。因此,最好在使用new程序之前檢查new產(chǎn)生的指針變量。


刪除運(yùn)算符

由于取消分配動(dòng)態(tài)分配的內(nèi)存是程序員的責(zé)任,因此使用C ++語(yǔ)言為程序員提供了delete運(yùn)算符。

句法:

//釋放指針變量指向的內(nèi)存

delete?指針變量;?

在這里,指針變量是指向由new創(chuàng)建的數(shù)據(jù)對(duì)象的指針。

例子:

delete?p;??delete?q;

要釋放指針變量指向的動(dòng)態(tài)分配數(shù)組,請(qǐng)使用以下形式的delete:

delete[] p;

本期的知識(shí)分享就到這里了,希望對(duì)大家有幫助~

另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

主頁(yè)群分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

編程學(xué)習(xí)書(shū)籍分享:

編程學(xué)習(xí)視頻分享:



C/C++編程筆記:C ++中用于動(dòng)態(tài)內(nèi)存的new和delete運(yùn)算符的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
长泰县| 保靖县| 姜堰市| 乌拉特后旗| 乌海市| 阿克陶县| 定兴县| 固原市| 安顺市| 渝北区| 宁乡县| 潼关县| 原阳县| 邵阳县| 兴业县| 大方县| 栾川县| 长葛市| 子长县| 竹山县| 云霄县| 南乐县| 普格县| 泰来县| 清水河县| 大埔区| 英山县| 平潭县| 集安市| 萍乡市| 磐石市| 娄底市| 太仓市| 广宗县| 安溪县| 莫力| 常州市| 墨玉县| 柳江县| 潢川县| 柘城县|