ошибка: обнаружен glibc при использовании вектора - PullRequest
2 голосов
/ 01 августа 2011

Я использовал массивы в своем коде, и теперь я изменил их на 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 ]

3 голосов
/ 01 августа 2011

Это просто дикая догадка (без просмотра кода), но вы просто заменили свой массив из этого:

// 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, который должен точно указать, в какой строке проблема.

0 голосов
/ 01 августа 2011

Вы говорите, что не определили размер для вектора. Это означает, что он имеет нулевой размер.

В этом случае этот код

x.insert(x.begin()+i,i)

недопустимо для любого i, кроме нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...