操作系統(tǒng)把C代碼分成四個區(qū):
(1)堆區(qū)(heap):一般由程序員分配釋放(動態(tài)內(nèi)存申請與釋放),若程序員不釋放,則不會析構(gòu)。
(2)棧區(qū)(stack):程序局部變量竭钝。 由編譯器自動分配釋放,存儲函數(shù)的參數(shù)值茧泪,局部變量的值等蜓氨。程序結(jié)束時自動析構(gòu)。
(3)全局區(qū)(靜態(tài)區(qū)static):有常量和全局變量和靜態(tài)變量的存儲室放在一塊的队伟,初始化的全局變量和靜態(tài)變量是在一塊區(qū)域穴吹,未初始化的全局變量和未初始化的靜態(tài)變量在相鄰的另一塊區(qū)域,該區(qū)域在程序結(jié)束后由操作系統(tǒng)釋放嗜侮。
常量區(qū):字符串常量和其他常量的存儲位置港令,程序結(jié)束后由操作系統(tǒng)釋放。
(4)代碼區(qū)(code):存放函數(shù)體的二進制代碼锈颗。
流程說明
1顷霹、操作系統(tǒng)把物理硬盤代碼load到內(nèi)存
2、操作系統(tǒng)把c代碼分成四個區(qū)
3击吱、操作系統(tǒng)找到main函數(shù)入口執(zhí)行