C++核心編程
本階段主要針對C++面對物件編程技術做詳細講解,探討C++中的核心和精髓,
1 記憶體磁區模型
C++程式在執行時,將記憶體大方向劃分為4個區域
- 代碼區:存放函式體的二進制代碼,由于作業系統進行管理的
- 全域區:存放全域變數和靜態變數以及常量
- 堆疊區:由編譯器自動分配釋放,存放函式的引數值,區域變數等
- 堆區:由程式員分配和釋放,若程式員不釋放,程式結束時由作業系統回收
記憶體四區意義:
不同區域存放的資料,賦予不同的生命周期,給我們更大的靈活編程
1.1 程式運行前
在程式編譯后,生成了exe可執行程式,未執行該程式前分為兩個區域
代碼區:
- 存放CPU執行的機器指令
- 代碼區是共享的,共享的目的是對于頻繁被執行的程式,只需要在記憶體中有一份代碼即可
- 代碼區是只讀的,使其只讀的原因是防止程式意外地修改了他地指令
全域區:
- 全域變數和靜態變數存放在此
- 全域區還包含了常量區,字串常量和其他常量也存放在此
- 該區域地資料在程式結束后由作業系統釋放
1.2 程式運行后
堆疊區:
- 有編譯器自動分配釋放,存放函式地引數值,區域變數等
- 注意事項:不要回傳區域變數的地址,堆疊區開辟的資料由編譯器自動釋放
堆區:
- 由程式員分配釋放,若程式員不釋放,程式結束時由作業系統回收
- 在C++中主要利用new在堆區開辟記憶體
1.3 new運算子
C++中利用new運算子在堆區開辟資料,堆區開辟的資料,由程式員手動開辟,手動釋放,釋放利用運算子delete
語法:new 資料型別
利用new創建的資料,會回傳該資料對應的型別的指標
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/498523.html
標籤:C++
上一篇:Python“預警機”
下一篇:string的底層實作
