Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于函数中定义的向量_C++_Memory Management_Memory Leaks - Fatal编程技术网

C++ 关于函数中定义的向量

C++ 关于函数中定义的向量,c++,memory-management,memory-leaks,C++,Memory Management,Memory Leaks,假设在函数中定义了一个std::vector(即,在堆栈上),并重新分配了该向量(如通过插入数据)。向量的任何部分都在堆中吗?如果是,执行完函数后,它会在堆中留下任何垃圾吗?谢谢 向量的任何部分都在堆中吗 是:std::vector中的所有元素都存储在堆分配的数组中 执行完函数后,它会在堆中留下任何垃圾吗 否。std::vector容器与所有标准库容器一样,负责清理它创建的任何对象 但是,请注意,如果您动态分配对象(例如,使用new)并将其存储在容器中,则您有责任销毁这些对象。为了避免自己清理东

假设在函数中定义了一个std::vector(即,在堆栈上),并重新分配了该向量(如通过插入数据)。向量的任何部分都在堆中吗?如果是,执行完函数后,它会在堆中留下任何垃圾吗?谢谢

向量的任何部分都在堆中吗

是:
std::vector
中的所有元素都存储在堆分配的数组中

执行完函数后,它会在堆中留下任何垃圾吗

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

但是,请注意,如果您动态分配对象(例如,使用
new
)并将其存储在容器中,则您有责任销毁这些对象。为了避免自己清理东西,应该尽可能避免显式地动态分配对象,并在其他地方使用智能指针