一個由c/oc編譯的程序占用的內(nèi)存分為以下五個部分:
1.棧區(qū):由編譯器在需要的時候分配,在不需要的時候自動清除的變量的存儲區(qū)。程序自動管理不需要手動管理。
2.堆區(qū):一般由程序員手動管理,? 若程序員不釋放,程序結(jié)束時可能由OS回收 。
3.靜態(tài)區(qū)(全局區(qū)):保存自動全局變量和 static 變量(包括 static 全局和局部變量)。靜態(tài)區(qū)的內(nèi)容在總個程序的生命周期內(nèi)都存在,由編譯器在編譯的時候分配。注意:未初始化的全局變量和未初始化的static 變量在相鄰的另一塊區(qū)域。
4.常量區(qū):存放常量字符串。 程序結(jié)束后由系統(tǒng)釋放。
5.方法區(qū)(程序代碼區(qū)):方法轉(zhuǎn)為函數(shù)具體實現(xiàn),存放函數(shù)體的二進制代碼。