c++ - 删除 vector 指针

标签 c++ pointers memory-management vector

我正在尝试编写一段非常简单的代码来使用 STL vector 创建 3x2 矩阵。
这是我的:

#include <vector>
using namespace std;

int main ()
{

  int i;

  vector<int> * x = new vector<int> [3];

  for (i = 0; i < 3; i++)
       x[i] = vector<int> (2); 

  delete x;

  return 0;

}

问题是每次我运行程序时,它都会崩溃。如果我删除 delete x然后它工作正常,但可能会导致内存泄漏。

我知道这可能不是创建矩阵的最佳方法,而且有很多选择,但我只想知道为什么上述程序每次都会崩溃。

此外,替换所有出现的 vector<int>int , 然后一切正常。

最佳答案

要销毁动态分配的数组,您必须使用delete[],而不是delete

虽然这将使代码工作,但它不是最佳解决方案。下面的程序做同样的事情,但更简洁、更安全。

#include <vector>

int main ()
{
  std::vector<std::vector<int>> x(3, std::vector<int>(2));
}

关于c++ - 删除 vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11988849/

相关文章:

memory-management - 虚拟内存和物理内存有什么区别?

c++ - 对于 C++/XAML 文件,Visual Studio 一次会阻止 UI 几分钟

c++ - 排序多个四边形的顶点

c++ - 奇怪的结构 - C++

c - 在 C 程序中的函数中传递二维数组

c - 在C中操纵char数组-空指针?

java - Hibernate:evict()一个持久对象,同时存储其更改

c++ - 在结构中存储 COM 指针

c - 无法在嵌入式设备上分配内存

c++ - 破坏 TagLib::File 时 TagLib 崩溃并且无法关闭打开的 TagLib::File