| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Ошибка на пустом месте |
| Автор: Matematik 28.11.2013, 23:48 | ||
| Привет. Наткнулся в программе на глюк. Получал на пустом месте AV. Долго обрезал лишее, получил такой "псевдокод". Тут другая ошибка - OutOfMemory, но смысл тот же.
Может я что-то не понимаю? Очень нужен свежий взгляд. |
| Автор: Poseidon 29.11.2013, 01:36 | ||
Мне даже почему-то не хочется объяснять почему так. Вроди у GunSmoker'a в задачках есть подобное и объясняется.
|
| Автор: Matematik 29.11.2013, 06:33 |
| Бегло посмотрел все задачки уGunSmoker'a и не нашёл объяснения. |
| Автор: Illusion Dolphin 29.11.2013, 08:31 | ||
| Попробую догадаться: Упростил до
Всё равно как-то неочевидно, плохое поведение делфи, имхо, хотя что просили - то и получили. |
| Автор: Illusion Dolphin 29.11.2013, 09:07 | ||
И поправьте меня если я не прав, но тут тоже не всё чисто:
Ошибки нету из-за того, что предыдущее L ещё существует т.к. на него ссылается S, но если S перезаписать когда-либо, а потом использовать A, то будет та же ошибка. |
| Автор: Matematik 29.11.2013, 10:18 | ||||
На утро ошибка кажется вполне логичной, A это L (т.к. const) и refCnt=1. Перезаписываю L, старое осводожнается т.к. RefCnt=0, но А по-прежнему указывает на старое уже уаленное L. Получаю Oops!
И ведь специально такое не придумаешь. |