Linux中C程序的存儲空間佈局 & C++的五大存儲空間

Linux中C程序的存儲空間佈局

可以從《APUE》上面摘得下圖所示,即爲Linux中C程序的存儲空間佈局情況。

從低地址到高地址依次分爲五大部分

1.正文段。即爲代碼段,它存儲的是CPU執行的機器指令,這部分是共享的,即存儲其中只有正文段的一個副本。另外,正文段一般都是隻讀的,防止程序意外修改其指令。

2.初始化數據段(數據段)。這段存儲空間主要存放的是全局作用域中明確賦初值了的變量。

3.未初始化數據段(BSS段)。這段存儲空間主要存放的是全局作用域中沒有明確賦初值的變量,在程序開始執行之前,內核將這段中的數據初始化爲0或者空指針。

4.堆(heap)。堆通常用於動態存儲分配,是從低地址往高地址方向增長。

5.棧。局部變量以及每次函數調用時所需要保存的信息存放在棧區,每次函數調用都會新建一個新的棧幀,因此,每個函數調用的過程都是單獨,不會互相影響,除了static變量之外。棧是從高地址向低地址方向增長。

我們可以通過一個實例來深入瞭解一下:


發佈了68 篇原創文章 · 獲贊 42 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章