1. 對於一個完整的程序,在內存中的分佈情況如下圖 :
代碼區
全局數據區
堆區
棧區
一個程序一般分爲3段:text段,data段,bss段。
text段:就是放程序代碼的,編譯時確定,只讀;
data段: 存放在程序編譯階段(而非運行時)就能確定的數據,可讀可寫,就是通常所說的靜態存儲區,賦了初值的全局變量和靜態變量存放在這個區域,常量也存放在這區域
bss段: 定義而沒有賦初值的全局變量和靜態變量,放在這個區域
堆和棧的區別
一、預備知識
1.程序的內存分配
一個由C/C++編譯的程序佔用的內存分爲以下部分
1. 棧區(stack)---由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。其操作方式類似於數據結構中的棧。