C++內(nèi)存管理與程序內(nèi)存分區(qū)

C++內(nèi)存分區(qū)

C++存在如下的內(nèi)存分區(qū)

1)棧區(qū)(stack):由編譯器自動分配釋放 ,存放函數(shù)的 參數(shù)值枣申,局部變量的值等茂契。其操作方式類似于數(shù)據(jù)結(jié) 構(gòu)中的棧。

2)堆區(qū)(heap):一般由程序員分配釋放忆首,若程序員不 釋放爱榔,程序結(jié)束時可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu) 中的堆是兩回事糙及,分配方式倒是類似于鏈表详幽。

3)全局/靜態(tài)區(qū)(static):全局變量和靜態(tài)變量的存儲是 放在一塊的,在程序編譯時分配

4)文字常量區(qū):存放常量字符串

5)程序代碼區(qū):存放函數(shù)體(類的成員函數(shù)浸锨、全局函數(shù)) 的二進制代碼

C語言中唇聘,內(nèi)存分配有三種:

  1. 靜態(tài)區(qū)域分配:由編譯器自動分配與釋放,內(nèi)存在編譯的時候已經(jīng)分配好柱搜,這塊內(nèi)存在整個程序的運行期間都存在直到程序結(jié)束時才被釋放迟郎,如全局變量與static變量。
  2. 棧分配:由編譯器在程序運行時從棧上分配聪蘸,函數(shù)棧退出時自動釋放谎亩。棧分配的運算在處理器的指令集中,所以它的運行效率很高宇姚,但能分配的內(nèi)容是有限的匈庭。
  3. 堆分配:有程序員主動調(diào)用內(nèi)存分配函數(shù)來申請內(nèi)存,且使用完畢后由程序員自己釋放浑劳,其使用非常靈活阱持,但其分配方式是通過調(diào)用函數(shù)來實現(xiàn),效率沒棧高魔熏。malloc,alloc等

程序在內(nèi)存中的分布

程序內(nèi)存分區(qū)

中文版

內(nèi)存分區(qū)
  1. 內(nèi)核空間

  2. 1衷咽、stack存放函數(shù)的臨時變量鸽扁、局部變量、函數(shù)參數(shù)和返回值
    2镶骗、由編譯器自動分配和釋放桶现。

  3. 動態(tài)鏈接庫(共享映射區(qū))

    調(diào)用的庫文件,位于堆和棧之間

  4. heap用來動態(tài)分配內(nèi)存鼎姊,由程序員控制骡和,交由程序自身決定開辟和釋放。

  5. 全局數(shù)據(jù)區(qū)

    .bss

    bss段用來存放沒有被初始化和已經(jīng)被初始化為0的全局變量

    .data

    data段用來存放已經(jīng)被初始化為非0的全局變量

  6. 常量區(qū)

    .rodata

    rodata段用來存放常量數(shù)據(jù)相寇、被編譯器自動存放來的字符串和加const關(guān)鍵字的常量數(shù)據(jù)慰于。

  7. 代碼區(qū)

    .text

    text段用來存放代碼和部分整數(shù)常量,該段是可執(zhí)行的唤衫。

堆與棧

棧是一種的“先進后出”的存儲結(jié)構(gòu)婆赠。

堆是一種完全二叉樹。節(jié)點從左到右填滿佳励,最后一層的樹葉都在最左邊休里。(即如果一個節(jié)點沒有左邊兒子,那么它一定沒有右邊兒子)赃承,每個節(jié)點的值都小于(或者大于)其子節(jié)點的值(大頂堆份帐、小頂堆)。它的特點是可以使用一維數(shù)組來表示楣导。堆的操作也可通過數(shù)據(jù)元素交換的形式解決,非常適合內(nèi)存空間線性的特點畜挨。


參考地址

  1. 程序在內(nèi)存中的分布
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末筒繁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巴元,更是在濱河造成了極大的恐慌毡咏,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逮刨,死亡現(xiàn)場離奇詭異呕缭,居然都是意外死亡,警方通過查閱死者的電腦和手機修己,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門恢总,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人睬愤,你說我怎么就攤上這事片仿。” “怎么了尤辱?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵砂豌,是天一觀的道長厢岂。 經(jīng)常有香客問我,道長阳距,這世上最難降的妖魔是什么塔粒? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮筐摘,結(jié)果婚禮上卒茬,老公的妹妹穿的比我還像新娘。我一直安慰自己蓄拣,他們只是感情好扬虚,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著球恤,像睡著了一般辜昵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上咽斧,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天堪置,我揣著相機與錄音,去河邊找鬼张惹。 笑死舀锨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的宛逗。 我是一名探鬼主播坎匿,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雷激!你這毒婦竟也來了替蔬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤屎暇,失蹤者是張志新(化名)和其女友劉穎承桥,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體根悼,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡凶异,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挤巡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剩彬。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矿卑,靈堂內(nèi)的尸體忽然破棺而出襟衰,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布瀑晒,位于F島的核電站绍坝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苔悦。R本人自食惡果不足惜轩褐,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望玖详。 院中可真熱鬧把介,春花似錦、人聲如沸蟋座。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽向臀。三九已至巢墅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間券膀,已是汗流浹背君纫。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芹彬,地道東北人蓄髓。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像舒帮,于是被迫代替她去往敵國和親会喝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355