删除向量指针

lin*_*ver 1 c++ pointers memory-management vector

我正在尝试编写一段非常简单的代码来使用STL向量创建一个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;

}
Run Code Online (Sandbox Code Playgroud)

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

我知道这可能不是创建矩阵的最好方法,并且有一个选择营,但我想知道为什么上面的程序每次都会崩溃.

此外,更换的每次出现vector<int>有发言权int,那么一切工作的罚款一次.

R. *_*des 10

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

虽然这将使代码工作,但它是一个次优的解决方案.以下程序做同样的事情,但更加简洁,更安全.

#include <vector>

int main ()
{
  std::vector<std::vector<int>> x(3, std::vector<int>(2));
}
Run Code Online (Sandbox Code Playgroud)