C 程式記憶體分布

2022-05-17 13:07:59 字數 819 閱讀 9721

程式中變數的記憶體分配方式

程式執行時需要占用多大的空間需要在編譯時確定,便於作業系統為程式分配適當的記憶體空間。

從靜態儲存區分配:程式的全域性變數和靜態變數都在這裡分配,且在編譯時已經分配好,在程式終止前被作業系統**。

在棧上建立:在函式呼叫時,函式的形參和區域性變數都在棧上建立,函式執行完畢時這些記憶體自動被釋放掉。

從堆(heap)上分配:在程式執行期間,用動態儲存分配函式申請和釋放的記憶體

動態儲存分配

由動態記憶體管理系統管理的這塊記憶體區域叫做「堆(heap)」:

當需要動態靈活地分配記憶體空間時,需要用到動態儲存分配 動態分配得到的記憶體塊位於堆中,

且沒有名字 動態儲存分配由庫函式malloc.h提供 格式:

p = (double* ) malloc(n*sizeof(double)) c++中動態儲存分配由運算子new和delete實現 new和delete完成動態儲存分配時,

可以很好地和建構函式、析構函式進行互動,malloc和free不能自行呼叫建構函式和析構函式

具體方法: 指標變數名 = new 型別;

指標變數名 = new 型別 (初值);

指標變數名 = new 型別 [元素個數];

當執行new時,有兩件事發生: 大小適當的空間被分配給特定型別的變數;

該儲存空間首位址作為new表示式的返回值,若分配失敗則返回0 ;

基本型別一般不採用動態儲存分配

C程式記憶體分布

1 棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數值等。2 堆區 heap 一般由程式設計師分配釋放,隨叫隨到,揮之即走。3 全域性 靜態區 static 全域性變數和靜態變數的儲存是放在一起的,在程式編譯時分配。4 文字常量區 存放常量字串。5 程式 區 存放函式體 包括類的...

c程式的記憶體分布

一 c程式的記憶體分布 既然static是用來修飾變數和函式的,而變數和函式又是組成 c程式必不可少的,c程式的 記憶體分布圖如下。c 程式由下面5 部分組成 1 正文段 cpu 執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所...

C程式的記憶體分布

目錄 1.c程式記憶體分布 2.示例詳解 2.1檢視記憶體分布 2.2未初始化全域性變數 2.3未初始化靜態變數 2.4已初始化靜態變數 2.5初始化全域性變數 乙個典型的c程式的記憶體布局包含下面幾個部分 1 text segment code segment 文字 段 2 initialized...