我正在尝试编写一段非常简单的代码来使用 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/