記憶體分割槽模型(C 學習記錄)

2021-10-10 13:53:21 字數 1127 閱讀 6569

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

記憶體四區意義:

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

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

1.**區

​ 存放 cpu 執行的機器指令.

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

​ **區是唯讀的,使其唯讀的原因是防止程式意外地修改了它的指令.

2.全域性區

​ 全域性變數和靜態變數存放在此.

​ 全域性區還包含了常量區, 字串常量和其他常量也存放在此.

​ 該區域的資料在程式結束後由作業系統釋放.

示例:

//全域性變數

int g_a =10;

int g_b =10;

//全域性常量

const

int c_g_a =10;

const

int c_g_b =10;

intmain()

執行結果:

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

堆區:

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

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

int

*func()

intmain()

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

​ 堆區開闢的資料,由程式設計師手動開闢,手動釋放,釋放利用操作符 delete

​ 語法:new 資料型別

​ 利用new建立的資料,會返回該資料對應的型別的指標

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

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

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

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

C 學習記錄 (2)記憶體分割槽

linux應用程式分割槽為 段 資料段 堆 棧 c 分割槽為 區 全域性區 堆 棧 存放函式體的二進位制 由作業系統執行。存放全域性變數 靜態變數和常量,由作業系統釋放。區和全域性區在程式執行前在有了,exe檔案。存放程式設計師申請的變數,由程式設計師分配釋放的空間,如果程式設計師不釋放 程式結束會...