C 基礎 記憶體模型

2022-10-11 05:18:10 字數 729 閱讀 7847

**區:存放函式體的二進位制**,由作業系統進行管理;

全域性區:存放全域性變數和靜態變數以及常量;

棧區:由編譯器自動分配釋放,存放函式的引數值、區域性變數等;

堆區:由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統**。

存放cpu執行的機器指令,**區是共享的,只有乙份**,是唯讀的。

存放全域性變數(定義在函式{}外的變數)、靜態變數(static修飾的變數)、部分常量(字串常量和const修飾的全域性常量)。

注意:#define巨集定義是不放記憶體的,定義的變數只是替換關係。

在c++中主要利用new在堆區開闢記憶體,由程式設計師分配釋放,若程式設計師不釋放,整個程式結束時由作業系統釋放。

利用new建立的資料,會返回該資料對應型別的指標。

開闢的資料由程式設計師手動釋放,利用delete操作符。

eg:

int * func()
釋放:delete p;指標p也屬於區域性變數,存放在棧區,但是p裡存的是位址,這個位址指向堆區,堆區的記憶體裡值為10。

C 基礎 記憶體模型記憶體分割槽模型

區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 存放cpu執行的機器指令,區是共享的,只有乙份 是唯讀的。存放全域性變數 定義...

c 基礎複習 程式的記憶體模型

存放cpu執行的機器指令 區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 區是唯讀的,唯讀的原因是防止程式意外的修改了它的指令 全域性變數和靜態變數存放在這 全域性區還包括了常量區,字串常量和其他常量也存放在這 該區域在程式結束後由作業系統進行釋放 include using ...

C 基礎(2) 程式的記憶體模型

c 的記憶體模型分為四大區 區 存放函式體的二進位制 由作業系統進行管理的 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 存放cpu執行的機器指令 區是共享的,共享的目的...