所以我有一个堆分配的 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/