Это приложение запросило Runtime прекратить его необычным способом. - PullRequest
8 голосов
/ 22 марта 2011

В течение многих лет я видел приложения C ++, использующие язык "необычного способа" в аварийном завершении.Например:

Это приложение запросило среду выполнения, чтобы завершить его необычным способом.Пожалуйста, обратитесь в службу поддержки приложения для получения дополнительной информации.

Первая из них, которую я отладил, имела отношение к деструктору, запускаемому для класса в цепочке наследования, который уже был удален,Я не могу вспомнить подробности лучше, чем это.Когда я гуглю эту тему, я нахожу одну или две другие предложенные причины.Например, что сами двоичные файлы стали поврежденными и должны быть перезаписаны.

В целом, я считаю, что информация об этом виде сбоя слишком мала.Я хотел бы увидеть две вещи:

  1. Формальное объяснение того, почему существует такой тип завершения (и какие платформы Windows, если применимо).
  2. Список всех причин,или, по крайней мере, из-за общих причин, по которым происходит сбой такого типа.

Кто-нибудь знает, где можно найти эту информацию?Кто-нибудь может предоставить эту информацию?

1 Ответ

10 голосов
/ 22 марта 2011

Этот диалог создается средой выполнения Visual Studio в ответ на abort().abort() по умолчанию вызывается, например, terminate().Вы получите это, например, из необработанных исключений c ++, вызова чистых виртуалов, ошибочных утверждений.

Таким образом, это не зависит от платформы, но зависит от библиотеки времени выполнения.abort() по стандарту c ++ требуется для завершения программы без выполнения деструкторов для автоматических и статических объектов хранения и без вызова обработчиков atexit().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...