c 程式的記憶體模型

2021-10-19 13:51:02 字數 1426 閱讀 9304

記憶體分為四個區域,不同區域存放的資料賦予不同的生命週期,靈活程式設計

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

全域性區:存放全域性變數以及常量,由作業系統釋放

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

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

共享:頻繁被執行的程式只有乙份**,而不是執行一次複製乙份**

唯讀:防止意外修改

全域性變數和靜態變數存放在此,還包括常量區(字串常量和其他常量const)

全域性變數:不在函式體裡

#include

using

namespace std;

int g_a =1;

//全域性變數

int g_b =2;

const

int c_g_a =7;

//全域性常量const global

區域性變數存放在棧區,棧區的資料在函式執行完後自動釋放

不能返回區域性變數的位址

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

堆區資料由程式設計師管理

new的使用

#include

using

namespace std;

int*f(

)voidt1(

)voidt2(

)for

(int i =

0; i <

10; i++

)delete

arr;

//釋放陣列,要加乙個【】

}int

main()

C 程式的記憶體模型

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

C 程式記憶體模型

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

C 程式設計 程式的記憶體模型

記憶體分割槽模型為4個區 區 存放函式的二進位制 由作業系統進行管理,存放cpu執行的機器指令,區是共享的 共享的目的是對於頻繁被執行的程式,只需要在記憶體中有乙份 即可 區是唯讀的 防止程式意外地修改它的指令 全域性區 存放全域性變數和靜態變數及常量,常量包括字串常量和const修飾的常量 棧區 ...