2011-01-21 63 views
2

給定指針的STL vector,每個元素必須在銷燬vector本身之前解除分配。是否有任何技術含義阻止STL庫自動執行此操作?STL向量釋放

感謝

+0

「給定STL指針向量,每個元素必須在銷燬向量本身之前解除分配」否,這並不遵循。無論如何,手動管理資源都不好。使用智能指針。 – GManNickG 2011-01-21 01:16:44

回答

2

你可以存儲在那裏指針時載體銷燬智能指針

採用矢量不應被刪除(如提高:: shared_ptr的)接收自動釋放

+0

如果指針是共享的!否則使用boost :: ptr_vector – 2011-01-21 04:49:25

5

原因STL不會爲你做這件事,因爲它不知道它是否應該這樣做。你可能有一個指向數組的指針向量(在這種情況下,它需要做delete[]),指向常規對象的指針(在這種情況下,它需要做delete),或者可能有一些自定義分配器的內存。這些指針也可以與其他對象共享,在這種情況下,刪除它們會導致其他對象指向垃圾數據,導致未定義的行爲。這些指針也可以是堆棧分配的內存,在這種情況下不需要重新分配。

2

如果一個向量包含指針,這並不意味着指針指向動態內存。如果他們這樣做,應該將delete還是delete[]應用於每個指針?如果這些指針指向使用展示位置新創建的對象呢?所有這些問題都應該由程序員來解答,而不是由圖書館來解答。

+2

「並不意味着......指向靜態內存」應該說「動態」。 – 2011-01-21 01:17:32