【发布时间】:2014-07-05 12:53:31
【问题描述】:
我们有一个场景需要创建一个
std::vector<std::vector<float>> data;
因为向量的长度完全不同。
当数据被释放时,数据中的每个向量是否也释放了它的空间?
【问题讨论】:
-
是的。当
std::vector被析构时,它会调用其每个元素的析构函数。 -
您认为这样的代码不工作并以某种方式引入错误是否明智?什么样的标准库会包含这样的数据结构?您认为您应该如何“解决”这个问题?
-
@KerrekSB:C 标准将,
float** array; ... free(array);不会在array中包含的指针上调用 free。 -
@MatthieuM.:这是一个延伸的比较——指针不拥有任何东西。不是
float ** array;需要清理;这是您获取存储在array中的值的任何操作。
标签: c++ c++11 memory-management vector memory-leaks