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)