c++有3中管理資料記憶體的方式:自動儲存、靜態儲存和動態儲存,以這三種方式分配的資料物件各不相同。
自動儲存。
在函式內部定義的常規變數使用自動儲存空間,稱為自動變數,他們在所屬的函式被呼叫時自動產生,在該函式結束時消亡。
自動變數是乙個區域性變數,其作用域為包含它的**塊。
自動變數通常儲存在棧中。在執行**時,其中的變數被依次加到棧中,在離開**塊時,將按照相反的順序釋放這些變數,這稱為先進後出。在程式執行的過程中,棧不斷地增大和縮小。
靜態儲存
靜態儲存是整個程式執行期間都存在的儲存方式。使變數成為靜態的方式有兩種:一種在函式外面定義它,另一種在宣告變數時使用關鍵字static。
動態儲存
new和delete運算子提供動態儲存方法。它們管理乙個記憶體池,被稱為自由儲存空間或堆。該記憶體池同靜態變數和自動變數的記憶體是分開的。new和delete讓我們能夠在乙個函式中分配記憶體,而在另乙個程式中釋放它。因此,這讓程式設計師如何使用記憶體有了更大的控制權,然而,記憶體管理更複雜了。如果使用new運算子之後沒有呼叫delete,會導致記憶體洩漏。c++智慧型指標有助於避免這種情況。
C 靜態儲存,動態儲存
什麼是靜態儲存,動態儲存 靜態儲存變數通常是在變數定義時就分定儲存單元並一直保持不變,直至整個程式結束。動態儲存變數是在程式執行過程中,使用它時才分配儲存單元,使用完畢立即釋放。典型的例子是函式的形式引數,在函式定義時並不給形參分配儲存單元,只是在函式被呼叫時,才予以分配,呼叫函式完畢立即釋放。如果...
(五十九)自動儲存 靜態儲存 動態儲存
自動儲存 函式內部定義的常規變數,被稱為自動變數,這意味著他們在所屬的函式被呼叫的時候自動產生,在該函式結束時消亡。自動變數是乙個區域性變數,作用域為包含他的 塊,比如int main 中定義的int a 在int abc 這個函式中就不能用。自動變數通常儲存在 棧 中,這意味著執行 塊時,其中的變...
C語言基礎 靜態儲存和動態儲存
一 儲存方式 變數從變數值存在的時間 即生存期 角度分 靜態儲存方式和動態儲存方式。靜態 由系統分配固定的儲存空間,全域性變數就儲存在靜態儲存區。動態 系統根據需要進行動態的分配儲存空間。在動態儲存區存放一下資料 1 函式形式引數 2 自動變數 未加 static 宣告 3 函式呼叫時的現場保護和返...