删除堆分配的二维向量

Deleting a heap allocated 2-dimensional vector

本文关键字:二维 向量 分配 删除      更新时间:2023-10-16

所以我有一个向量的向量是堆分配的:

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

在向CCD_ 1。删除此对象的正确方法是什么?

delete matrix是否解除分配所有内部矢量?

是的,delete matrix;可以。

您可能需要考虑是否需要动态分配向量。矢量总是将其数据存储在空闲存储(堆)上,因此不需要为此而动态分配。他们的脚印很小。

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

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

是的。delete matrix在返回内存之前调用std::vector<std::vector<int>>的析构函数。析构函数调用将调用其所有元素的析构函数std::vector<int>

此外,std::vector的大多数用法都不需要在堆上创建它。我怀疑你的案子也是如此。