內存空間的佈局
每個應用程序內存都應有自己獨立的內存空間,其內存空間一般都有以下幾大區域
1、代碼段(代碼區)
用於存放代碼(機器碼),只讀
2、數據段(全局區)
用於存放全局變量等(static)
整個程序運行中都存在,除非關閉進程
#include <iostream>
using namespace std;
//全局變量
int g_age = 10;
int main() {
return 0;
}
g_age 就是全局變量
3、棧空間
每調用一個函數就會給它分配一段連續的棧空間,等函數調用完畢後會自動回收這段棧空間(注意:如果申請了堆空間,堆空間需要手動銷燬)
#include <iostream>
using namespace std;
int g_age = 10;
// 調用test 開闢連續的棧空間
void test() {
int a = 1;
int b = 2;
int c = a + b;
}
int main() {
// 調用時自動分配,調用後自動回收
test();
return 0;
}
4、堆空間
使用場景
在程序運行過程,爲了能夠自由控制內存的生命週期、大小會經常使用堆空間的內存
四種堆棧佈局(使用語言:c++、x86環境)
1、 創建對象(棧),對象內部申請棧空間 ☆
對象內部申請的棧空間,隨對象一起回收
2、 創建對象(棧),對象內部申請堆空間 ☆
對象內部申請的堆空間,由對象內部回收