Насколько серьезна ошибка несоответствия оператора new / delete?

Я обнаружил в нашей кодовой базе классическую ошибку несовпадения нового / удаления, а именно:

char *foo = new char[10];

// do something

delete foo; // instead of delete[] foo;

Насколько это серьезно? Это вызывает утечку памяти или ошибку? Какие последствия. У нас есть некоторые проблемы с памятью, но это не кажется достаточно серьезным, чтобы объяснить все наши симптомы (повреждение кучи и т. Д.)

РЕДАКТИРОВАТЬ: дополнительные вопросы для ясности
Освобождает ли он только первый член массива? или
Это заставляет систему терять контроль над массивом? или
Поврежденная память каким-то образом?

15
задан Brian Tompsett - 汤莱恩 20 August 2015 в 09:50
поделиться