說到內(nèi)存分區(qū),內(nèi)存即指的是RAM
- 棧區(qū)(stack): 這個一般由編譯器操作,或者說是系統(tǒng)管理,會存一些局部變量,函數(shù)跳轉(zhuǎn)跳轉(zhuǎn)時現(xiàn)場保護(hù)(寄存器值保存于恢復(fù)),這些系統(tǒng)都會幫我們自動實(shí)現(xiàn),無需我們干預(yù)。 所以大量的局部變量,深遞歸,函數(shù)循環(huán)調(diào)用都可能耗盡棧內(nèi)存而造成程序崩潰
- 堆區(qū)(heap): 一般由程序員管理,比如alloc申請內(nèi)存,free釋放內(nèi)存。我們創(chuàng)建的對象也都放在這里
- 全局區(qū)(靜態(tài)區(qū) static):全局變量和靜態(tài)變量的存儲是放在一塊的,初始化的全局變量和靜態(tài)變量在一塊區(qū)域, 未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域。 - 程序結(jié)束后有系統(tǒng)釋放。注意:在嵌入式系統(tǒng)中全局區(qū)又可分為未初始化全局區(qū):.bss段和初始化全局區(qū):data段。舉例:int a;未初始化的。int a = 10;已初始化的。
- 常量區(qū):常量字符串就是放在這里的,還有const常量
- 代碼區(qū):存放代碼,app程序會拷貝到這里,程序不是在ROM里面存儲嗎?看下面的舉例
!示例