內(nèi)存區(qū)域劃分 棧區(qū)(stack) 1)程序運(yùn)行時(shí)由編譯器自動分配的一塊連續(xù)的內(nèi)容,存放函數(shù)的參數(shù)值,局部變量的值等 2)程序結(jié)束時(shí)由編譯器自動釋放 3) 棧由系統(tǒng)自動分配,程序員無法控制 * 4)只要棧的剩余空間大于所申請空間,系統(tǒng)將為程序提供內(nèi)存,否則將報(bào)異常提示棧溢出。 5)存取方式,先進(jìn)后出 堆區(qū)(heap) 1)在內(nèi)存開辟另一塊不連續(xù)的存儲區(qū)域。一般由程序員分配釋放, 2)若程序員不釋放,程序結(jié)束時(shí)由系統(tǒng)回收 3)首先應(yīng)該知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表,當(dāng)系統(tǒng)收到程序的申請時(shí),會遍歷該鏈表,尋找第一個(gè)空間大于所申請空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除,并將該結(jié)點(diǎn)的空間分配給程序。 靜態(tài)存儲區(qū)(static) 編譯器編譯時(shí)分配內(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日
|
|