到目前為止,在為程式中定義的物件分配記憶體空間時採用的都是「靜態儲存方式」,在編譯時就確定了所佔儲存空間的大小,而與之相對的動態儲存分配技術則可以保證在程式執行過程中按照實際需要申請適量的記憶體,使用結束後再進行釋放。這種在程式執行過程中根據需要可以隨時建立或刪除的物件稱為自由儲存物件。建立和刪除工作分別由運算子new和delete完成。
用new建立單個物件時,要根據引數呼叫相應的建構函式;在用new建立物件陣列時,會呼叫預設建構函式;用delete刪除物件時,要呼叫析構函式。
在對自由儲存物件呼叫建構函式和析構函式時要注意,這時的呼叫是顯式進行的,呼叫順序取決於new和delete運算子的順序。這時析構函式的執行順序不一定與建構函式的執行順序嚴格相反,但物件陣列中各個元素的構造與析構順序仍然是相反的。
C 自由儲存區記憶體分配
c c 定義了4個記憶體區間 區,全域性變數與靜態變數區,區域性變數區即棧區,動態儲存區,即堆 heap 區或自由儲存區 free store 1 堆的概念 通常定義變數 或物件 編譯器在編譯時都可以根據該變數 或物件 的型別知道所需記憶體空間的大小,從而系統在適當的時候為他們分配確定的儲存空間。這...
c 指標和自由儲存空間
本博文為本人閱讀c primer plus第4章復合型別後做的小筆記,僅記錄本人不熟悉或者容易犯錯的地方 指標是乙個變數,儲存的是值得位址,而不是值本身 位址運算子 可以獲得變數的所在位址 指標名表示的是位址,運算子被稱為間接值 indirect value 或者解除引用 dereferencing...
C 自由儲存區與堆
談到自由儲存區與堆的區別,就需要了解new與malloc的區別。實際上堆是c語言的關鍵術語,是作業系統所維護的一塊特殊記憶體,它提供了動態分配的功能。使用者使用malloc進行堆記憶體申請,使用free實現堆記憶體的釋放。但自由儲存區不同,它是c 中的乙個抽象的概念。c 中規定使用new delet...