Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не возникает access violation


Автор: dizzy1984 26.11.2009, 13:24
Код

double * d = new double[1025];
delete [] d;
d[1025 / 2] = 123;

Обращение к освобожденной памяти не приводит к ошибке доступа, почему?

Автор: SenkraD 26.11.2009, 13:44
dizzy1984,  это UB и этим всё сказано

Автор: mes 26.11.2009, 14:42
Цитата(dizzy1984 @  26.11.2009,  12:24 Найти цитируемый пост)
Обращение к освобожденной памяти не приводит к ошибке доступа, почему? 

ОС не всегда видит  AV  (зависит от настоения  smile  ) smile

Автор: Леопольд 26.11.2009, 15:03
Цитата(dizzy1984 @  26.11.2009,  13:24 Найти цитируемый пост)
Обращение к освобожденной памяти не приводит к ошибке доступа, почему? 

Потому что освобождённая память не вернулась операционной системе. Поэтому ОС считает что ты обращаешься к памяти которая прнадлежит приложению. Деталей не знаю, но предполагаю что причина в этом. Может быть если подождать немного...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)