記憶體分割槽的意義:不同區存放不同的資料,賦予不同的生命週期,從而有更大的靈活性。
未執行程式占用兩個記憶體區域
**區
全域性區
程式原始碼:
#includeusing namespace std;
//全域性變數
int g_a = 10;
int g_b = 20;
//靜態變數
static int s_a = 10;
static int s_b = 20;
//全域性常量
const int c_a = 10;
const int c_b = 20;
int main()
結果如下:
程式執行後,才會使用棧區和堆區。
棧區
程式原始碼:
#includeusing namespace std;
int* fun1()
int main()
結果如下:堆區程式原始碼:
#includeusing namespace std;
int* fun1()
int main()
結果如下: C 程式記憶體模型
區 存放函式體的二進位制 由作業系統進行管理的 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 記憶體分割槽的意義 不同的區域存放的資料,賦予不同的生命週期,給我們更大的靈...
C語言記憶體模型詳解
second60 20180415 在c語言中,記憶體可分用五個部分 1.bss段 block started by symbol 用來存放程式中未初始化的全域性變數的記憶體區域。2.資料段 data segment 用來存放程式中已初始化的全域性變數的記憶體區域。3.段 text segment ...
c 程式的記憶體模型
記憶體分為四個區域,不同區域存放的資料賦予不同的生命週期,靈活程式設計 區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數以及常量,由作業系統釋放 棧區 存放函式的引數值,區域性變數,由編譯器自動分配釋放 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 共...