2011-03-09 47 views
1

假設在一個函數(即堆棧中)中定義了一個std :: vector並且該矢量被重新分配(例如通過插入數據)。矢量的任何部分是否堆在一起?如果是的話,當完成執行功能時,會不會在堆中留下垃圾?謝謝。關於函數中定義的矢量

回答

2

該矢量的任何部分是在堆中?

是:所有在std::vector的元素被存儲在堆分配陣列。

完成執行功能後,它會在堆中留下垃圾嗎?

編號std::vector容器與所有標準庫容器一樣,負責清理它創建的任何對象。

然而,注意,如果你動態分配對象(例如,使用new)並將它們存儲在一個容器中,然後是負責銷燬這些對象。爲了避免自己清理東西,你應該避免在任何可能的地方動態分配對象,並在其他地方使用智能指針。