二、程式執行後
三、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 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...