2011-03-09 74 views
1

假设在一个函数(即堆栈中)中定义了一个std :: vector并且该矢量被重新分配(例如通过插入数据)。矢量的任何部分是否堆在一起?如果是的话,当完成执行功能时,会不会在堆中留下垃圾?谢谢。关于函数中定义的矢量

回答

2

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

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

完成执行功能后,它会在堆中留下垃圾吗?

编号std::vector容器与所有标准库容器一样,负责清理它创建的任何对象。

然而,注意,如果你动态分配对象(例如,使用new)并将它们存储在一个容器中,然后是负责销毁这些对象。为了避免自己清理东西,你应该避免在任何可能的地方动态分配对象,并在其他地方使用智能指针。