第一个解决方案是:
std::vector<int> *vec = new std::vector<int>;
assert(vec != NULL);
// ...
delete vec;
安alternative是:
std::vector<int> v;
//...
vec.clear();
vec.swap(std::vector<int>(vec));
第二个解决方案有点小技巧——“正确”的做法是什么?
更新:
我知道析构函数一旦离开堆栈就会被调用,我对其他方法很好奇。
最佳答案
解除分配 vector 的最简单和最可靠的方法是在堆栈上声明它并且什么也不做。
void Foo() {
std::vector<int> v;
...
}
C++ 保证 v
的析构函数将在方法执行时调用。 std::vector
的析构函数将确保释放它分配的任何内存。只要T
vector<T>
的类型具有适当的 C++ 释放语义一切都会好起来的。
关于c++ - "Right"解除分配 std::vector 对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3054567/