C 動態記憶體

2022-06-14 03:36:09 字數 575 閱讀 8559

這篇博文,記錄一下自己學習的關於c++動態記憶體的內容。

什麼是動態記憶體?

當我學習一件東西的時候,一般最先想知道的是,這是什麼東西。為了理解動態記憶體,我們先要知道c++記憶體相關的知識。

c/c++程式所占用的記憶體除了文字常量區(存放常量字串)和程式**區(存放函式體的二進位制**),主要是三個部分:

知道這些內容後,我們就知道了動態記憶體,就是由程式設計師從堆中根據需要申請的一塊記憶體。隨之而來的問題就是:為什麼需要動態記憶體。

為什麼需要動態記憶體?

我在《c++primer》上找到了答案,程式使用動態記憶體一般出於以下三個原因之一:

對於第一種原因,很好的例子就是容器類。c++中原始陣列,必須在宣告的時候就給出陣列的大小,很不靈活,動態陣列就是實現隨時新增元素並且不會造成資源的浪費。對於第三個原因,因為動態記憶體是由程式設計師分配釋放,不會被編譯器銷毀,所以可以通過指向動態記憶體的指標在物件共享資料。

如何使用動態記憶體?

動態記憶體的使用,也就是new和delete的使用,這裡就不詳細介紹,但最重要的就是要記住幾點

C 動態記憶體

了解動態記憶體在 c 中是如何工作的是成為一名合格的 c 程式設計師必不可少的。c 程式中的記憶體分為兩個部分 很多時候,您無法提前預知需要多少記憶體來儲存某個定義變數中的特定資訊,所需記憶體的大小需要在執行時才能確定。在 c 中,您可以使用特殊的運算子為給定型別的變數在執行時分配堆內的記憶體,這會...

C 動態記憶體

棧 在函式內部宣告的所有變數都將占用棧記憶體 堆 這是程式中未使用的記憶體,在程式執行時可用於動態分配記憶體 new和delet運算子 動態分配記憶體的通用語法 new data type 如果自由儲存區已被用完,可能無法成功分配記憶體。所以建議檢查 new 運算子是否返回 null 指標,並採取以...

C 動態記憶體

到目前為止,我們的程式中我們只用了宣告變數 陣列和其他物件 objects 所必需的記憶體空間,這些記憶體空間的大小都在程式執行之前就已經確定了。但如果我們需要記憶體大小為乙個變數,其數值只有在程式執行時 runtime 才能確定,例如有些情況下我們需要根據使用者輸入來決定必需的記憶體空間,那麼我們...