C 學習筆記之記憶體分配

2021-08-14 18:41:29 字數 487 閱讀 3431

靜態記憶體(staitc memory):儲存區域性static物件、類static資料成員、定義在任何函式之外的變數

棧記憶體(stack):儲存定義在函式內的非static物件

自由空間(free store)或稱堆記憶體(heap):儲存動態分配(即程式執行時分配)的物件

1. 分配在靜態記憶體和棧記憶體的物件由編譯器自動建立和銷毀。

2. 對於棧物件,僅在定義它的程式塊執行時才存在;而static物件在使用之前分配,程式結束之前銷毀。

3. 動態分配的物件則是由程式來控制,當物件不再使用時,**必須顯示銷毀它們。

在正確的時間釋放記憶體很困難

1. 如果忘記釋放記憶體,會產生記憶體洩露

2. 如果在尚有指標引用記憶體的情況下就把記憶體釋放了,這會產生引用非法記憶體的指標

C 之記憶體分配

很多人都覺得學習 c 是特別困難的事情。c 學習是比較複雜的 它的記憶體分配 指標 以及物件導向思想的實現等等,確實需要一定的技術積累。我們將以專題的形式,為大家逐一剖析 c 的技術重點和難點。本專題討論的就是記憶體分配。學習 c 如果不了解記憶體分配是一件非常可悲的事情。而且,可以這樣講,乙個 c...

C之記憶體分配

常見記憶體分配的錯誤 記憶體分配方式 1.靜態儲存區域 內存在程式編譯的時候就分配好,這塊內存在程式的整個執行期間都存在,如全域性變數 static變數 2.棧 在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時,這些儲存單元會被自動釋放。效率高,但分配的記憶體容量比較有限。3...

C 並不難 之記憶體分配

c 並不難 之記憶體分配 很多人都覺得學習c 是特別困難的事情。c 學習是比較複雜的 它的記憶體分配 指標 以及物件導向思想的實現等等,確實需要一定的技術積累。我們將以專題的形式,為大家逐一剖析c 的技術重點和難點。本專題討論的就是記憶體分配。學習c 如果不了解記憶體分配是一件非常可悲的事情。而且,...