错误:使用向量时检测到glibc

时间:2011-08-01 09:06:01

标签: c++ linux vector

我在代码中使用了数组,现在我将它们更改为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

2 个答案:

答案 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无效。