棧堆
靜態儲存區
生命週期
函式結束即釋放
new,malloc開闢,delete,free釋放
釋放前,一直存在
最長,程式退出才釋放
儲存型別
程式、區域性變數
new,malloc申請的空間,用於儲存資料
常量static 修飾的變數,用於儲存資料
大小vs2010預設1m
vs2010,x32-2g;x64-128g(虛擬更多)
vs2010預設2g
1.三者比較
2.new和malloc比較
newmalloc()
屬性c++關鍵字,操作符
庫函式引數
無須指定記憶體塊的大小
需要返回型別
型別嚴格與物件匹配
void*,要強制轉換
分配失敗
丟擲bac_alloc異常
返回null
自定義型別
支援過載
允許過載
不允許記憶體區域
自由儲存區(free store)
堆
3.執行過程解析
c語言儲存區 堆疊靜態儲存區
棧 由編譯器自動分配釋放,其中存放在主調函式中被呼叫函式的下一句 函式引數和區域性變數,容量有限 堆由程式設計師自己分配釋放 用malloc和free,或new和delete 如果我們不手動釋放,那就要到程式結束才釋放。如果對分配的空間在不用的時候不釋放而一味的分配,那麼可能會引起記憶體洩漏,其容量...
堆疊靜態儲存區
1 從靜態儲存區域分配 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。速度快 不容易出錯,因為有系統會善後。例如全域性變數,static變數等。靜態變數分為區域性靜態變數和全域性靜態變數,注意區分,區域性靜態變數不是全域性變數 靜態全域性變數的作用域僅限於當前原始檔,靜態區域性變...
C 靜態儲存區,堆,棧區別
學習c 如果不了解記憶體分配是一件非常可悲的事情。而且,可以這樣講,乙個c 程式設計師無法掌握記憶體 無法了解記憶體,是不能夠成為乙個合格的c 程式設計師的。一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存...