如上所示即爲典型C內存空間分佈圖,從高地址向低地址進行說明:
1.stack,即棧區,存放自動變量,以及函數調用時保存的信息。每當進行函數調用時,函數的實參和返回地址以及調用者的上下文環境會被存放在棧中;棧區由編譯器自動分配,從高地址向低地址擴展,爲什麼會這樣?我也不知道
2.heap,即堆區,動態內存分配都是發生在堆區,堆區由程序員分配釋放,或程序結束後由操作系統自動回收,從低地址向高地址擴展
3.uninitialized data,即未初始化數據段,通常稱爲bss段,未初始化的全局變量和靜態變量都存放在此處;這個段在程序開始之前由內核初始化爲全0,所以不在可執行文件中佔用位置,可減少可執行文件體積
4.initialized data,即已初始化數據段,通常稱爲數據段,已初始化的全局變量和靜態變量都存放在此處,可進一步劃分爲只讀區和讀寫區
5.text,即文本段/代碼段,用來存放程序的可執行代碼,代碼段是隻讀的,防止被修改
C++內存空間分佈
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
書店管理系統---不完善
KuseBear
2020-07-08 11:07:33
信號量問題----父母子女四人喫水果
hu7324829
2020-07-08 11:13:17
一個簡易的bc計算器
KuseBear
2020-07-08 11:07:30
MCU初始化流程——從上電到main()之間
說明: 以下介紹示例的MCU地址空間如下: ROM空間爲:0x0000 0000 – 0x0000 8000 RAM空間爲:0x2000 0000 – 0x2000 2000
jltsun
2020-07-08 11:00:06
求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等關鍵字以及條件判斷語句
Wen_de_ll
2020-07-08 10:41:26
C異常處理機制:setjmp和longjmp
walterxia
2020-07-08 10:38:40
codeforces 1251E1/E2 Voting
祤溪
2020-07-08 12:36:32
獲取某一目錄下所有文件夾名,返回vector「string」
COSummer
2020-07-08 12:27:32
linux環境下開源庫jsoncpp使用教程
Worthy_Wang
2020-07-08 12:19:12
C++:模擬實現list容器(支持迭代器)
ETalien_
2020-07-08 12:19:01
C++(面試題):給40億個不重複的無符號整數,沒排過序,如何快速判斷一個數是否在這40億個數中
ETalien_
2020-07-08 12:19:01
C++ 併發中的無鎖編程
蚓无爪牙之利
2020-07-08 11:23:03