一、棧區(qū)(stack)
由編譯器自動(dòng)管理。存放函數(shù)的參數(shù)值,局部變量等。操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
棧是由高地址往低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存區(qū)域。即:棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先定好的,如果申請(qǐng)的空間超過(guò)棧的剩余空間時(shí),將提示溢出溢出(overflow)。因此,能從棧獲取的空間較小。
二、堆區(qū)(heap)
一般由開發(fā)者分配釋放,如果不釋放,程序結(jié)束時(shí),可能由操作系統(tǒng)回收。其與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事。
堆是從低地址向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存的區(qū)域。這是由于系統(tǒng)使用鏈表存儲(chǔ)空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。因此,堆獲得的空間比較靈活,也比較大。
三、全局區(qū)(靜態(tài)區(qū))
存放全局變量和靜態(tài)變量。初始化的全局變量和靜態(tài)變量放在一起,未初始化的放在一起。
四、 文字常量區(qū)
寸放字符串常量,程序結(jié)束后由系統(tǒng)釋放。
五、程序代碼區(qū)
存放函數(shù)體的二進(jìn)制代碼。