C 記憶體是如何分配的

2021-10-25 01:45:54 字數 890 閱讀 4029

c++ 程式在執行時,將記憶體劃分為4個區域:

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

存放cpu執行的機器指令,

**區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份**就行了。

**區是唯讀的,使其唯讀的原因是防止程式意外修改了它的指令。

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

全域性變數和靜態變數存放在這裡

全域性區還包含了常量區,字串常量和其他常量也在此存放

該區域的資料在程式結束後,作業系統釋放

1#,2#是程式執行前開闢的。

//全域性變數

int a1 = 10;

int b1 = 77;

//靜態變數

static int a2 = 10;

static int b2 = 77;

//常量

const int a3 = 10;

const int b3 = 77;

//int* fun(int a)

//堆區的記憶體位址的開闢和釋放

//new關鍵字,開闢堆區的位址

//delete 變數;

//delete 陣列名;

int main()

3#:棧區:由編譯器進行管理,自動分配釋放,存放函式的引數值,區域性變數等。

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

不同區域存的資料,賦予不同的生命週期,使程式設計更加靈活。

C C 程式是如何分配記憶體的?

一 乙個c c 編譯的程式所占用的記憶體分為以下5部分 名稱英文 存放變數型別 分配方式 核心特點 棧區stack 函式的引數值,區域性變數等 程式執行時由編譯器自動分配,程式結束時由編譯器自動釋放。操作方式類似於資料結構中的棧 棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量...

2 類在記憶體中是如何分配的

類在記憶體中是如何分配的 乙個類,有成員變數 靜態與非靜態之分 而成員函式有三種 靜態的 非靜態的 虛的。那麼這些個東西在記憶體中到底是如何分配的呢?1 c 中,應該是物件才會被分配記憶體空間吧?為什麼cobject記憶體大小剛好和兩個成員變數的大小之和一致!難道還沒例項化的時候,類就已經有了記憶體...

C 的記憶體分配

一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。它主要存放靜態資料 全域性資料和常量。棧區 在執行函式時,函式內區域性變數的儲存單元都可以在...