學習篇 C 基礎 記憶體分割槽

2021-10-12 07:50:03 字數 1178 閱讀 7882

二、程式執行後

三、new操作符

四、一些tips:

程式在執行時,將記憶體大方向劃分為4個區域:

**區:存放

函式體的二進位制**,由作業系統進行管理

全域性區:存放

全域性變數和

靜態變數以及

常量棧區:由

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

堆區:由

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

在程式編譯後,生成了exe可執行程式,未執行該程式前分為兩個區域

存放cpu執行的機器指令(二進位制)

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

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

全域性變數靜態變數存放在此

全域性區還包含了常量區,字串常量和其他常量(const修飾的全域性變數–>全域性常量)也存放在此

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

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

在c++中主要利用new在堆區開闢記憶體

c++中利用操作符new在堆區開闢資料,利用操作符delete釋放資料

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

的基本語法

int*

func()

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

void

test01()

注意://釋放陣列的時候,要加,語法如:delete[ ] 陣列名

//2.在堆區利用new開闢陣列

void

test02()

for(

int i =

0; i <

10; i++

)//釋放堆區陣列

//釋放陣列的時候,要加

delete

arr;

}

注意new, delete和malloc, free的區別

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

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

C 基礎 記憶體管理篇

記憶體管理是計算機程式設計最為基本的領域之一。在很多指令碼語言中,您不必擔心記憶體是如何管理的,這並不能使得記憶體管理的重要性有一點點降低。對實際程式設計來說,理解您的記憶體管理器的能力與 侷限性至關重要。在大部分系統語言中,比如 c 和 c 您必須進行記憶體管理。本文將介紹手工的 半手工的以及自動...

c 記憶體分割槽

堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc c語言 或new c 來分配,free c語言 和delete c 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...