delete会删除向量中的每个元素并释放内存吗


vector<int>* v = new vector<int>;
for (int i = 0; i < 100; i++) {
(*v).push_back(i);
}
delete v;

我是否删除矢量的每个元素并释放内存?如果没有,我该如何释放内存?

分配new表达式分配内存,在该内存中构造一个动态对象,并返回指向该对象的指针。当您将这样的指针传递给delete时,指向的对象将被销毁,内存将被释放。

当类的实例(如向量)被销毁时,将调用其析构函数。向量的析构函数会破坏向量的所有元素。


旁注1:使用分配newdelete很少有用。当您需要动态存储时,更喜欢使用RAII结构,如容器和智能指针。

旁注2:一般情况下,您应该避免不必要地使用动态内存。很少需要像您的示例中那样的奇异动态向量。我建议如下:

std::vector<int> v(100);
std::ranges::iota(v, 0);

旁注3:避免使用(*v).push_back。它很难阅读。更喜欢使用间接成员访问运算符,也就是箭头运算符:v->push_back

相关内容

  • 没有找到相关文章

最新更新