程式的記憶體模型

2021-09-29 07:45:54 字數 2292 閱讀 1011

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

記憶體四區的意義:

不同區域存放的資料,富裕不同的生命週期,給我們更大的靈活程式設計

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

**區:

全域性區:

**示例:

#include

using namesapce std;int g_a = 10;int g_b = 10;const int c_g_a = 10;const int c_g_b = 10;int main()

全域性區和非全域性區圖示:

棧區:

**示例:

#include

using namespace std;int * func(int b)

//形引數據也會放在棧中int main()

堆區:**示例:

#include

using namespace std;int* func()int main()

補充:new操作符c++中利用new操作符在堆區開闢資料

堆區開闢的資料,由程式設計師手動釋放,釋放時利用delete,否則,在程式執行完之後,由作業系統**

語法:new 資料型別

利用new建立的資料,會返回該資料在堆區中分配的記憶體位址

#include

using namespace std;int* func()void func01() for (int i = 0; i < 10; i++) delete p; //釋放陣列}int main()

文章最後發布於: 2019-10-11 16:16:50

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

記憶體四區的意義:

不同區域存放的資料,富裕不同的生命週期,給我們更大的靈活程式設計

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

**區:

全域性區:

**示例:

#include

using namesapce std;int g_a = 10;int g_b = 10;const int c_g_a = 10;const int c_g_b = 10;int main()

全域性區和非全域性區圖示:

棧區:

**示例:

#include

using namespace std;int * func(int b)

//形引數據也會放在棧中int main()

堆區:**示例:

#include

using namespace std;int* func()int main()

補充:new操作符c++中利用new操作符在堆區開闢資料

堆區開闢的資料,由程式設計師手動釋放,釋放時利用delete,否則,在程式執行完之後,由作業系統**

語法:new 資料型別

利用new建立的資料,會返回該資料在堆區中分配的記憶體位址

#include

using namespace std;int* func()void func01() for (int i = 0; i < 10; i++) delete p; //釋放陣列}int main()

程式的記憶體模型

記憶體四區 區 存放函式體的二進位制 由作業系統進行管理的 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 記憶體四區的意義 不同區域存放的資料,賦予不同的生命週期,給我們...

c 程式的記憶體模型

記憶體分為四個區域,不同區域存放的資料賦予不同的生命週期,靈活程式設計 區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數以及常量,由作業系統釋放 棧區 存放函式的引數值,區域性變數,由編譯器自動分配釋放 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 共...

C 程式的記憶體模型

c 的個人學習之路!認識記憶體模型,才能更好的理解cpp物件導向的實現 c 的記憶體可以劃分為四個大區域 意義 不同區域存放的資料,賦予不同的生命週期,提高程式設計的靈活性。程式編譯後,生成了可執行程式,該程式為執行前分為兩個區域 這兩個區域執行前就已經被系統劃分存在了,所以在任何時刻區域的資料被讀...