2010-10-13 193 views
1

其中一個cpp文件具有用「new」運算符創建的結構指針。該指針是否應該被明確刪除?或者指針是否自動刪除?刪除指向結構的指針

+0

新的使用是創建一個動態的對象。你應該自己刪除它。你所說的關於自動對象是真實的。 – 2010-10-13 19:51:31

回答

7

C++不(通常)具有自動內存管理。要釋放該對象的內存,您可以使用刪除當使用是一個不同的問題。

編輯:此外,指針將被刪除(或將在堆棧上覆蓋)當函數返回時,但對象指着會留在堆中,直到你刪除它。

+0

+1「*當*使用它是一個不同的問題。」 – 2010-10-13 19:34:19

1

使用'new'關鍵字將在堆上分配內存,就像'malloc'在C中一樣。要在使用完內存後恢復內存,必須執行'delete'從'新'返回的指針。

這是很容易當某些對象的生活不它被實例化的功能外延伸,但是當這些物品被退回或添加到收藏變得更加複雜......

1

由於@Jared厄普代克的注意事項,你必須自己做。這就是爲什麼諸如Boost和C++ 0x這樣的智能指針被廣泛使用的原因之一 - 它們是輕量級類,它們管理底層原始內存指針,以避免在忘記deletedelete[]原始指針時(而不是)忘記內存泄漏。

如果您是C++新手,請自己幫忙,take a look at thosescoped_ptr,shared_ptr等)。

1

如果您正在尋找更輕鬆的內存管理,您可能需要查看Shared Pointers。它們是一種方便的方式,可以確保在使用相同的情況下內存將被釋放。