Вопрос знатокам Delphi и/или ассемблера - EAccessViolation read of address FFFFFFFA

программирование Delphi assembler ассемблер Делфи

Программа (довольно большая) в одно и то же время, после одного и того же действия выдает эту ошибку: http://plasmon.rghost.ru/52923701/image.png

Ошибка возникает на последней строчке одной большой функции. Не зависимо от того, что это за строчка. Это очень странно - я вставлял в конец процедуры самые разные инструкции и всегда ошибка возникала на последней инструкции (которая перед end;), какой бы эта инструкция ни была! Т.е. ошибка зависит не от кода получается а от чего-то другого! При отладке, когда выполняю программу по шагам это выглядит так - за 3 строчки до конца функции все идеально, за 2 все идеально, на последней строчке перед "end;" тоже все идеально, на следующем шаге ошибка.

Меня в ошибке смущает адрес FFFFFFFA - может там что-то где-то упирается в потолок памяти? Как это проверить и отладить, исправить? Из-за чего вообще эта ошибка возникает? Я гуглил - не помогло.


Прошелся пошагово в окне cpu, но так и не понял, в чем там проблема. Ошибка вылетает при вызове блока LStrClr. Я так понимаю это значит, что программа пытается освободить динамическую память. Вот как выглядит строчка на которой возникает ошибка
http://rghost.ru/52936734/image.png
А вот на какой строчке ошибка в самой процедуре LStrClr
http://rghost.ru/52936738/image.png


Я так понимаю, в регистр еах записывается адрес переменной, память которой надо освободить с помощью LStrClr, но непонятно, как мне из этой информации понять, что это за проблемная переменная...
Ответы:
ответил по ссылке


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.