bss段data段
data段(存放已初始化的數據):存放在編譯階段(而非運行時)就能確定的數據,可讀可寫。也就是通常所說的靜態存儲區,賦了初值的全局變量和賦初值的靜態變量存放在這個區域,常量也存放在這個區域;
bss段(存放未初始化的數據):定義而沒有賦初值的全局變量和靜態變量,放在這個區域;
ps:
text段是程序代碼段,它是由編譯器在編譯連接時自動計算的,當你在鏈接定位文件中將該符號放置在代碼段后,那么該符號表示的值就是代碼段的大小,編譯連接時,該符號所代表的值自動代入到源程序中。
stack/heap:
棧(stack):保存函數的局部變量和參數。是一種LIFO的數據結構,這意味著最后放到棧上的數據,將會是第一個從棧上移走的數據。棧,另外一個重要的特征是,它的地址空間“向下減少”,即當棧上保存的數據越多,棧的地址就越低。棧(stack)的頂部在可讀寫的RAM區的最后。
堆(heap):保存函數內部動態內存分配,是另外一種用來保存程序信息的數據結構,更準確的說是保存程序的動態變量。堆是(FIFO)數據結構。它只允許在堆的一端插入數據,在另一端移走數據。堆的地址空間“向上增加”,即當堆上保存的數據越多,堆的地址就越高。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。