在c++中許多人搞不清楚棧區(qū)和堆區(qū)的問(wèn)題,不了解堆區(qū)或者棧區(qū)內(nèi)存什么時(shí)候釋放,經(jīng)過(guò)我的學(xué)習(xí),簡(jiǎn)單給大家講解下:
創(chuàng)新互聯(lián)主營(yíng)將樂(lè)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,將樂(lè)h5小程序制作搭建,將樂(lè)網(wǎng)站營(yíng)銷推廣歡迎將樂(lè)等地區(qū)企業(yè)咨詢C++程序在執(zhí)行時(shí),將內(nèi)存大方向劃分為4個(gè)區(qū)域
代碼區(qū):存放函數(shù)體的二進(jìn)制代碼,由操作系統(tǒng)進(jìn)行管理的
全局區(qū):存放全局變量和靜態(tài)變量以及常量
棧區(qū):由編譯器自動(dòng)分配釋放, 存放函數(shù)的參數(shù)值,局部變量等
堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結(jié)束時(shí)由操作系統(tǒng)回收
所以,只要我們分清楚全局變量和局部變量,就能明白全局區(qū)和棧區(qū)的區(qū)別,
分清楚堆區(qū)和棧區(qū)定義,就能明白堆區(qū)和棧區(qū)的區(qū)別。
一:全局區(qū)和棧區(qū)的區(qū)別:
①函數(shù)體外的是全局變量,內(nèi)存在全局區(qū),函數(shù)體內(nèi)的是局部變量,內(nèi)存在棧區(qū)
②變量前加入static,就都是靜態(tài)變量,內(nèi)存在全局區(qū)
③const修飾的是常量,但常量分局部常量和全局常量。
④局部變量在函數(shù)中,不能返回其本身的地址(因?yàn)榫植孔兞績(jī)?chǔ)存在棧區(qū)上,在這個(gè)函數(shù)執(zhí)行完后,會(huì)有編譯器釋放內(nèi)存,意味著這個(gè)地址已經(jīng)不存在了)
二:堆區(qū)和棧區(qū)的區(qū)別:
①堆區(qū)是由程序員自己設(shè)置和刪除的,主要用的關(guān)鍵字new,利用new來(lái)開(kāi)辟內(nèi)存空間,創(chuàng)建指針變量,不過(guò)指針本質(zhì)上是局部變量地址在棧區(qū)上,保存的數(shù)據(jù)值放在堆區(qū)上。用完之后,要通過(guò)關(guān)鍵字delete來(lái)釋放內(nèi)存空間。
int* fun()
{
int* a = new int(10);
return a;
}
(利用new創(chuàng)建一個(gè)指針變量,并存放一個(gè)數(shù)值,這個(gè)指針是指向int類型,通過(guò)創(chuàng)建指針a來(lái)接受這個(gè)指針,并返回這個(gè)指針對(duì)象(因?yàn)榉祷氐氖侵赶騣nt類型的指針,所以用int * 進(jìn)行接受))
這里面所有的指針都是指的是地址,如果想知道里面的數(shù)值,需要解引用
int *p = fun();
cout<< *p<< endl;
(上面代碼的意思是p是一個(gè)指針變量,表示的是地址,利用*p進(jìn)行解引用,表示的是數(shù)值)
如果后續(xù)不使用這個(gè)指針變量,就利用關(guān)鍵字delete進(jìn)行釋放內(nèi)存
delete p
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站標(biāo)題:關(guān)于C++中內(nèi)存分區(qū)的知識(shí)-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article34/phhpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、標(biāo)簽優(yōu)化、電子商務(wù)、企業(yè)網(wǎng)站制作、動(dòng)態(tài)網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容