Бывает такое, что при каждом закрытии игра начинает крашиться с таким окном:
Есть два способа решить проблему.
Способ 1: почистить реестр
Нужно удалить элемент, в значении которого написано: IgnoreFreeLibrary<Game.dll>.
На самом деле варкрафт всегда крашится при выходе, даже когда не видно окна с ошибкой.
Просто обычно он не обращает внимание на эту проблему, так как находится в состоянии завершения работы.
Просто обычно он не обращает внимание на эту проблему, так как находится в состоянии завершения работы.
Но если Windows что-то взбредет в голову, то он может добавить некую запись в реестр и из-за этого краш перестает тихо игнорироваться.
Способ 2: установить исправляющий мод
Архив с модом прикреплен к ресурсу. Киньте .mix файл в папку с игрой.
Мод затирает деструктор глобальной переменной, из-за чего та удалится лишь один раз, когда счетчик ссылок упадет до нуля.
Мод затирает деструктор глобальной переменной, из-за чего та удалится лишь один раз, когда счетчик ссылок упадет до нуля.
Причина
В варкрафте есть объект, олицетворяющий нулевую строку, находящийся в статической памяти. При завершении процесса, все подобные объекты уничтожаются один за другим.
На эту строку ссылаются другие объекты, и за каждый такой объект счетчик ссылок в строке увеличивается на единицу. Когда счетчик ссылок падает до 0 строка уничтожается.
На эту строку ссылаются другие объекты, и за каждый такой объект счетчик ссылок в строке увеличивается на единицу. Когда счетчик ссылок падает до 0 строка уничтожается.
Проблема в том, что сначала при уничтожении статических объектов, уничтожается нулевая строка, а затем, когда уничтожаются прочие объекты, ссылающиеся на строку, счетчик в конце концов падает до нуля и строка уничтожается повторно.
Попытка взаимодействия с мертвым объектом приводит к крашу.
Ред. EugeAl
Ред. IceFog
Дальше управление передается по этому адресу, но обычно там нет инструкций для исполнения и игра крашится.
Ред. EugeAl
Ладно, спасибо.
Ред. Meddin