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

2021-10-06 14:33:20 字數 471 閱讀 1932

c++程式執行時,主要分為4個區域:

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

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

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

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

有四個區的概念對於程式設計靈活性提高有很大的幫助

程式執行前,未執行程式前分為兩個區域

**區:共享、唯讀

全域性區:全域性變數、靜態變數(static)、常量區、字串常量、其他常量。該區域資料在程式結束後作業系統釋放const區域性變數和區域性變數都不在全域性區。

程式執行後:

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

注意:不要返回區域性變數的位址。

堆區:程式元分配釋放,作業系統也會自己進行**。

程式設計師可以通過使用new在堆區開闢資料,new返回的時該區的指標,也就是儲存資料的位址。

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

c 程式在執行時,將記憶體大致分為4個取區域。區 存放函式體的二進位制 由作業系統進行管理。全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,則程式結束時由作業系統 在程式編譯後,生成了.exe可...

C 之記憶體分割槽

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

c 之記憶體模型

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