-形耗、內(nèi)存區(qū)域劃分
-
棧區(qū)(stack)
1)程序運(yùn)行時(shí)由編譯器自動(dòng)分配的一塊連續(xù)的內(nèi)容捆探,存放函數(shù)的參數(shù)值,局部變量的值等
2)程序結(jié)束時(shí)由編譯器自動(dòng)釋放
- 棧由系統(tǒng)自動(dòng)分配次和,程序員無法控制
-
4)只要棧的剩余空間大于所申請(qǐng)空間呆盖,系統(tǒng)將為程序提供內(nèi)存拖云,否則將報(bào)異常提示棧溢出。 5)存取方式应又,先進(jìn)后出
-
堆區(qū)(heap)
1)在內(nèi)存開辟另一塊不連續(xù)的存儲(chǔ)區(qū)域宙项。一般由程序員分配釋放,
2)若程序員不釋放株扛,程序結(jié)束時(shí)由系統(tǒng)回收
3)首先應(yīng)該知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表杉允,當(dāng)系統(tǒng)收到程序的申請(qǐng)時(shí),會(huì)遍歷該鏈表席里,尋找第一個(gè)空間大于所申請(qǐng)空間的堆結(jié)點(diǎn),然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除拢驾,并將該結(jié)點(diǎn)的空間分配給程序奖磁。
-
靜態(tài)存儲(chǔ)區(qū)(static)
編譯器編譯時(shí)分配內(nèi)存。全局變量和靜態(tài)變量的存儲(chǔ)是放在一塊的繁疤。
將變量定義的類型前加static,則該變量存儲(chǔ)在靜態(tài)存儲(chǔ)區(qū)
static:
1)只初始化一次
2)只有程序退出才釋放 -
常量區(qū)
- 常量占用內(nèi)存,只讀狀態(tài),決不可修改
2)常量字符串就是放在這里的,程序結(jié)束后由系統(tǒng)釋放
-
代碼區(qū)
所有的語句編譯后會(huì)生成CPU指令存儲(chǔ)在代碼區(qū).
-