【发布时间】:2012-08-12 21:38:58
【问题描述】:
我正在尝试编写一段非常简单的代码来使用 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;
}
问题是每次我运行程序时,它都会崩溃。如果我删除delete x,那么它工作正常,但可能会导致内存泄漏。
我知道这可能不是创建矩阵的最佳方式,而且有很多选择,但我只想知道为什么上述程序每次都崩溃。
另外,将每次出现的vector<int> 替换为int,然后一切正常。
【问题讨论】:
-
尝试使用
vector< vector<int> >;,不要再使用delete/new -
您使用 x 作为 x[] 但不删除作为 delete [] x 。为什么?
-
@rhalbersma:这是一个有效的答案。您应该将其作为答案而不是评论。
-
@Component10 已由 R. Martinho Fernandes 回答
-
你应该试试 boost::scoped_array,甚至是 boost::numeric::ublas::matrix
标签: c++ pointers memory-management vector