C 堆 棧 靜態儲存區

2022-07-29 01:45:07 字數 616 閱讀 1238

棧堆

靜態儲存區

生命週期

函式結束即釋放

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 程式設計師的。一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存...