其中一個cpp文件具有用「new」運算符創建的結構指針。該指針是否應該被明確刪除?或者指針是否自動刪除?刪除指向結構的指針
1
A
回答
7
C++不(通常)具有自動內存管理。要釋放該對象的內存,您可以使用刪除。 當使用是一個不同的問題。
編輯:此外,指針將被刪除(或將在堆棧上覆蓋)當函數返回時,但對象指着會留在堆中,直到你刪除它。
+0
+1「*當*使用它是一個不同的問題。」 – 2010-10-13 19:34:19
1
使用'new'關鍵字將在堆上分配內存,就像'malloc'在C中一樣。要在使用完內存後恢復內存,必須執行'delete'從'新'返回的指針。
這是很容易當某些對象的生活不它被實例化的功能外延伸,但是當這些物品被退回或添加到收藏變得更加複雜......
1
由於@Jared厄普代克的注意事項,你必須自己做。這就是爲什麼諸如Boost和C++ 0x這樣的智能指針被廣泛使用的原因之一 - 它們是輕量級類,它們管理底層原始內存指針,以避免在忘記delete
或delete[]
原始指針時(而不是)忘記內存泄漏。
如果您是C++新手,請自己幫忙,take a look at those(scoped_ptr
,shared_ptr
等)。
1
如果您正在尋找更輕鬆的內存管理,您可能需要查看Shared Pointers。它們是一種方便的方式,可以確保在使用相同的情況下內存將被釋放。
相關問題
- 1. 指向結構指針的指針
- 2. 刪除結構的指針是否也會刪除結構中的指針?
- 3. 指針指向結構指針錯誤
- 4. 設置結構的指針成員,從指針指向結構的指針
- 5. 指向結構的指針指向結構
- 6. 指向結構argv賦值的指針
- 7. 指向結構成員的指針
- 8. 返回指向結構體的指針
- 9. 刪除指針的指針
- 10. 刪除指向矢量的指針
- 11. 刪除指針向量
- 12. 結構和指針指針
- 13. 指針指向嵌套結構
- 14. 如何初始化指針指向C中的指針結構?
- 15. 指向結構和函數指針的指針 - > Seg Fault
- 16. 指向結構函數指針的函數指針
- 17. 如何使用C指針指向結構的指針?
- 18. 將指針複製到指向結構中某個結構的指針C
- 19. Malloc指向指向結構數組的指針參考
- 20. 指向指向c中結構的指針
- 21. 釋放指向其他結構的結構體中的指針
- 22. 指向包含結構的結構的指針
- 23. 結構中的指針指向結構的動態數組C
- 24. 設置指向結構的指針等於指向函數返回的結構的另一個指針?
- 25. 將指向結構成員變量的(常規)指針轉換爲指向整個結構的指針
- 26. 通過指針指向結構指針來更改變量
- 27. 結構體數組與指向結構體的指針數組
- 28. 解引用指向結構變量的結構指針
- 29. 指向不同結構內結構的指針。 C
- 30. 結構標記和指向結構的指針是否相同?
新的使用是創建一個動態的對象。你應該自己刪除它。你所說的關於自動對象是真實的。 – 2010-10-13 19:51:31