c++程式在執行時,將記憶體大方向分為 4 個區域,不同區域
存放的資料,賦予不同的生命週期,給我們更大的靈活程式設計
在程式編譯後,生成了exe可執行檔案,未執行前分為 2 個區域
(1)**區:存放 cpu 的機器指令
特點:
(2)全域性區:全域性變數和靜態變數存,還包含了常量區,字串常量和其他常量也存放在此
特點:該區域的資料在程式結束後由作業系統釋放
include using全域性區與不在全域性區的區別namespace
std;
//全域性變數
int g_a =10
;int g_b =10;//
const修飾的全域性常量
const
int c_g_a =10
;int
main()
注:常量區中存放const 修飾的全域性變數和字串變數
注意事項:
#include using為什麼棧區資料不返回區域性變數的位址??namespace
std;
int* func() //
形引數據也會放在棧區
intmain()
在c++中主要利用new在堆區中開闢資料
#include usingc++通過new和delete實現動態記憶體的申請和釋放------->可以在乙個函式申請,另乙個函式釋放namespace
std;
int *func()
intmain()
#include usingnew 和 deletenamespace
std;
int *func()
void
test()
//利用new在堆區開闢陣列
void
test1()
for(int i=0;i<10;i++)
//釋放陣列的時候,要加 [ ] 才可以
delete
arr;
}int
main()
按指定型別和大小在堆區動態的分配記憶體,如果建立成功則返回這塊記憶體空間的首位址,否則返回null
語法:指標變數名=new 型別名 (初值列表)
注:下標表示式1可以是任意正整數的表示式,其他下標必須是正整數常量表示式
釋放空間
語法:delete 指標變數名
刪除動態陣列:delete[ ] 指標變數名 ------> [ ]表示釋放為多個物件分配的位址,無需說明要釋放物件個數
1 記憶體分割槽模型
區 所有的 都會放這裡 全域性區 棧 由編譯器管理記憶體的分配和釋放 堆 由程式設計師分配和釋放 區和全域性區都是程式執行前分配的兩個區域 全域性區 全域性變數 靜態變數 常量 const 只要沒有寫到函式體中的都是全域性變數 static靜態變數也會放到全域性區 常量 字串常量 雙引號引起來的都是...
C 核心程式設計 1 記憶體分割槽模型
c 程式在執行時,將記憶體大方向劃分為4個區域 區 存放函式體的二進位制 由作業系統進行管理的 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放程式結束時由作業系統 記憶體四區意義 不同區域存放的...
C 基礎 記憶體模型記憶體分割槽模型
區 存放函式體的二進位制 由作業系統進行管理 全域性區 存放全域性變數和靜態變數以及常量 棧區 由編譯器自動分配釋放,存放函式的引數值 區域性變數等 堆區 由程式設計師分配和釋放,若程式設計師不釋放,程式結束時由作業系統 存放cpu執行的機器指令,區是共享的,只有乙份 是唯讀的。存放全域性變數 定義...