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