Glibc обнаружил повреждение памяти malloc() (0xb6179bb8) при вызове нового ключевого слова C++

Моя программа работает до такой степени, что вызов ключевого слова new может вызвать указанную выше ошибку. то есть char* a = new char[100]. Ошибка повторяется и каждый раз. Я запускаю программу до момента вызова ключевого слова new. Кажется, что место в памяти повреждено в этой точке, но я не уверен, в чем проблема.

Каковы возможные причины этой ошибки?


person Leslieg    schedule 01.10.2010    source источник
comment
Причина ошибки в том, что вы делаете что-то неправильно в своем коде. Поскольку вы не разместили никакого кода, невозможно быть более конкретным, чем это.   -  person James McNellis    schedule 01.10.2010
comment
посмотрите предыдущее распределение памяти в вашем коде, может с этим что-то не так. Или вы можете испортить запись кучи на неподходящий адрес перед выделением.   -  person Roman Shapovalov    schedule 01.10.2010
comment
0xb6179bb8 это было...? Просто позвольте мне найти это в моей Большой Книге Ошибок. Более серьезно - это, скорее всего, другая ошибка с использованием памяти кучи: многократное удаление/освобождение памяти, несоответствие одиночной переменной и нового/удаления массива, перезапись памяти до или после блоков памяти, которые вы зарезервировали, но может быть любой другое поведение, которое может вызвать неопределенное поведение. Обычно вы можете использовать такие инструменты, как valgrind или purify, чтобы найти точку, в которой вы делаете какую-то незаконную операцию, вызывающую это....   -  person Tony Delroy    schedule 01.10.2010


Ответы (1)


Эта ошибка означает, что вы испортили бухгалтерские данные диспетчера системной памяти. Такие искажения обычно являются результатом неправильного использования указателей, например

  • Использование неинициализированного указателя
  • Использование указателя после того, как память, на которую он ссылается, была освобождена (освобождение могло произойти через другой указатель)
  • Запись за пределами вашего массива
person Bart van Ingen Schenau    schedule 01.10.2010