c++ - 删除分配给堆的二维 vector

标签 c++ memory-management vector

所以我有一个堆分配的 vector vector :

std::vector<std::vector<int>>* matrix = new std::vector<std::vector<int>>();

将大量数据放入矩阵之后。删除此对象的正确方法是什么?

delete matrix 是否释放所有内部 vector ?

最佳答案

是的delete matrix;会没事的。

您可能需要考虑是否需要动态分配 vector 。 vector 总是将它们的数据存储在自由存储(堆)上,因此它们不需要因此而动态分配。它们的堆栈占用空间非常小。

如果您必须动态分配您的 vector ,那么您应该认真考虑使用智能指针,例如std::unique_ptr。或 std::shared_ptr ,那么您根本不需要调用 delete:

auto matrix = std::make_unique<std::vector<std::vector<int>>>();

关于c++ - 删除分配给堆的二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425218/

相关文章:

C++ 使用 gcount() 方法读/写随机访问文件

python - 计算python中两个向量(词袋)之间的欧氏距离

c++ - 使用分配器覆盖的数组支持 vector - 一个坏主意?

c++ - 无法在类中初始化 unique_ptr 的 vector

c++ - 从 'char*' 到 'char' 的无效转换

c++ - TLS 握手消息解析

c - 需要动态分配(初始化)的静态变量

Swift <uninitialized> let 属性

c++ - 动态分配一个二维数组,其中每行包含可变数量的元素并在 C++ 中释放它

c++ - 如何获取char C++的像素