簡體   English   中英

C ++變量/對象和堆內存管理

[英]C++ variables/objects and Heap Memory Management

我是c ++的新手,我一直在編寫在堆內存中創建對象的程序,不幸的是,我從未使用使用new運算符分配的delete運算符來取消分配內存。當系統啟動或重新啟動時,它將被回收/刷新將來還會分配它並產生諸如“內存不足”之類的內存錯誤嗎?
如果尚未取消分配內存,是否有嚴重的問題?
直到現在,一旦我驗證了結果,我的程序就會變小並終止。
感謝您的答復..:D

從理論上講,不刪除內存可能會導致內存泄漏,該漏洞在程序終止后仍然存在。 實際上,任何現代OS都將在程序退出時自動釋放程序分配的所有內存。

但是,這並不意味着不刪除內存是安全的。 對象可能具有需要執行重要清理的析構函數。 如果不刪除它們,則不會調用它們的析構函數。

在現代C ++中,使用局部變量存儲對象(而不是指針),容器和智能指針實際上很容易。 您應該了解它們。

系統啟動時,它將被回收/刷新。 程序退出時,操作系統將使用它。 另外,在系統重新啟動時也不必擔心任何泄漏。

盡管終止程序后內存泄漏不會繼續存在於系統的內存池中,但壞習慣是依靠重置來清除丟失的分配。

如果您可以使用更新的C ++ 11編譯器並且對防止泄漏感興趣,建議您從標准庫中檢查這兩個類。 通常,它們的使用將防止動態內存導致最常見的資源泄漏。

std :: shared_ptr

std :: unique_ptr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM