其中一個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. C++:刪除指針結構
- 2. 指向結構指針的指針
- 3. 指向結構指針的指針
- 4. 不同結構類型指針指向指針結構指針
- 5. 指向結構的指針
- 6. 指向結構的指針
- 7. 刪除結構的指針是否也會刪除結構中的指針?
- 8. 指針指向結構指針錯誤
- 9. 指向結構指針
- 10. 引用指向結構的指針,該結構包含指向結構的指針的指針
- 11. 設置結構的指針成員,從指針指向結構的指針
- 12. 指向結構的指針指向結構
- 13. 刪除指針向量中的指針指向的對象
- 14. 指向c中的結構的指針
- 15. 指向結構數組的指針
- 16. 指向結構成員的指針
- 17. 指向結構數組的指針
- 18. 指向結構中的指針
- 19. 指向結構體的指針陣列
- 20. 指向結構argv賦值的指針
- 21. 返回指向結構體的指針
- 22. C++指向結構的指針陣列
- 23. 指向結構的免費3D指針
- 24. 指向結構的指針成員
- 25. JNA指向結構的指針
- 26. C++指針結構不會被刪除
- 27. 刪除指針的指針
- 28. 刪除指向矢量的指針
- 29. 刪除指針向量
- 30. 指針和結構指針
新的使用是創建一個動態的對象。你應該自己刪除它。你所說的關於自動對象是真實的。 – 2010-10-13 19:51:31