c 學習之記憶體分割槽模型

2021-09-26 04:03:42 字數 791 閱讀 2998

c++程式在執行時,將記憶體大致分為4個取區域。

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

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

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

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

在程式編譯後,生成了.exe可執行程式,未執行該程式前分配**區。

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

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

**區是唯讀的,防止程式被意外地修改。

未執行該程式前就被分配。

全域性變數(函式外)和靜態變數(static)存放在此。

全域性區還包含了常量區(字串常量、const修飾的常量)

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

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

在c++中主要利用new來在堆區開闢記憶體,new返回建立物件的記憶體位址,需要用指標來接收。

#include using namespace std;

int * func()

int main()

void test01()

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

void test02()

for(int i=0; i<10; i++)

cout

delete arr; // 表示釋放的是陣列

}int main()

C 學習之記憶體分割槽模型

c 程式執行時,主要分為4個區域 區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配釋放,若程式設計師不釋放,程式結束時作業系統 有四個區的概念對於程式設計靈活性提高有很大的幫助...

C 之記憶體分割槽

程式執行後 new操作符 c 程式在執行時,將記憶體大方向劃分為4個區域 不同區域存放的資料,賦予不同的生命週期 在程式編譯後,生成了exe可執行程式,未執行該程式前分為兩個區域 區 存放 cpu 執行的機器指令 區是共享的,共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 即可 區是唯讀的...

c 之記憶體模型

c 程式在執行時,將記憶體大方向劃分為4個區域 區 存放函式體的二進位制 由作業系統進行管理 你寫的 都轉化成二進位制 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配和釋放,存放函式的引數值,區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 記...