1. 程式人生 > >程序記憶體空間的劃分(程式碼區,全域性區,BSS段,棧區,堆區,只讀常量區)

程序記憶體空間的劃分(程式碼區,全域性區,BSS段,棧區,堆區,只讀常量區)

程序的記憶體空間劃分:6個部分程式碼區、只讀常量區、全域性區、BSS段、堆、棧

    程式碼區 – 程式的程式碼(以函式的形式)存入程式碼區,函式指標就是函式在程式碼取得地址,程式碼區 是 只讀區域.

   只讀常量區 – 很多的書上都把只讀常量區歸入程式碼區,存放字串的字面值(“abc”)和const修飾的全域性變數。

   全域性區 – 存放全域性變數和static的區域性變數,讀寫許可權。

    BSS段 – 存放為初始化的全域性變數(沒有寫=的),讀寫許可權。全域性區和BSS段區別在於:雖然兩者都是在main執行前建立,但BSS段不會在 main()執行之前自動清0,而全域性區會。


    棧區(stack) -  也叫堆疊區 ,存放區域性變數(沒有static),函式的形參也是在棧區。


     堆區 (heap)- 也叫自由區,是程式設計師完全管理的區域,系統不會管理這個區域。