我在代码中使用了数组,现在我将它们更改为vector
并且我得到了这些错误(在linux中):
glibc detected *** double free or corruption
glibc detected malloc memory corruption
我的代码太长了,我无法在此处粘贴,这是我使用vector
的方式:
宣称:
vector:vector<double>x;//i didnt define anysize for vector
用于在其中插入值:
x.insert(x.begin()+i,i)
使用元素:
x.at(i)
就是这个。
您如何看待这个问题? <击> 击>
另外我不知道何时应该在向量中使用迭代器,我不应该在这里使用它吗? <击> 击>
TIA
答案 0 :(得分:3)
这只是一个疯狂的猜测(没有看到代码),但你只是从这个替换你的数组:
// some code
double *array = new double[ 50 ];
// use array somehow
delete[] array;
进入这个:
// some code
std::vector< double > array;
// use array somehow
delete [] &array[0];
你最好的选择是使用valgrind运行你的程序,它应该准确地告诉你哪一行是问题。
答案 1 :(得分:0)
您说没有为矢量定义任何大小。这意味着它的大小为零。
在这种情况下,这段代码
x.insert(x.begin()+i,i)
对于除零以外的任何i
无效。