电竞比分网-中国电竞赛事及体育赛事平台

分享

內(nèi)存分配:堆和棧

 北書房2014 2017-02-11

       內(nèi)存區(qū)域劃分

  棧區(qū)(stack)

  1)程序運行時由編譯器自動分配的一塊連續(xù)的內(nèi)容,存放函數(shù)的參數(shù)值,局部變量的值等

  2)程序結(jié)束時由編譯器自動釋放

  3) 棧由系統(tǒng)自動分配,程序員無法控制

  *

  4)只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報異常提示棧溢出。

  5)存取方式,先進(jìn)后出

  堆區(qū)(heap)

  1)在內(nèi)存開辟另一塊不連續(xù)的存儲區(qū)域。一般由程序員分配釋放,

  2)若程序員不釋放,程序結(jié)束時由系統(tǒng)回收

  3)首先應(yīng)該知道操作系統(tǒng)有一個記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請時,會遍歷該鏈表,尋找第一個空間大于所申請空間的堆結(jié)點,然后將該結(jié)點從空閑結(jié)點鏈表中刪除,并將該結(jié)點的空間分配給程序。

  靜態(tài)存儲區(qū)(static)

  編譯器編譯時分配內(nèi)存。全局變量和靜態(tài)變量的存儲是放在一塊的。

  將變量定義的類型前加static,則該變量存儲在靜態(tài)存儲區(qū)

  static:

  1)只初始化一次

  2)只有程序退出才釋放

  常量區(qū)

  1) 常量占用內(nèi)存,只讀狀態(tài),決不可修改

  2) 常量字符串就是放在這里的,程序結(jié)束后由系統(tǒng)釋放

  代碼區(qū)

  所有的語句編譯后會生成CPU指令存儲在代碼區(qū).

除非特別注明,雞啄米文章均為原創(chuàng)
轉(zhuǎn)載請標(biāo)明本文地址:http://www./software/550.html
2016年4月15日
作者:雞啄米 分類:軟件開發(fā) 瀏覽:16004 評論:0

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多