一個由C/C++編譯的程序的內存分佈分爲以下幾個部分:
1、 棧(stack):也是我們所說的堆棧,是由編譯器自動分配釋放,用來存放函數參數值,函數的返回地址,非靜態局部變量的值等。其操作方式類似於數據結構中的棧(後進先出LIFO)。
2、 堆(Heep):一般由程序員分配釋放,若程序員不釋放,程序結束可能由OS回收。
3、 全局區(靜態區):全局變量和靜態變量存儲在這一塊,初始化的全局變量河靜態變量放在一塊區域,未初始化的全局變量靜態變量放在相鄰的另一塊區域(BSS)。程序結束後由系統釋放。
4、 文字常量區:常量字符串放在這個區域。
5、 程序代碼區:存放函數體的二進制代碼。