gpt4 book ai didi

c++ - "Right"解除分配 std::vector 对象的方法

转载 作者:IT老高 更新时间:2023-10-28 12:35:32 26 4
gpt4 key购买 nike

第一个解决方案是:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com