2012-06-20 2 views
0

У меня есть приложение на C++, которое хорошо работает на нескольких машинах. Но я нашел более одного ПК, что приложение не будет работать на них с ошибкой:C++ runtime Ошибка

This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

Что интересно, что в одном компьютере, частично работает и частично нет. Несколько дней назад это не удалось с ошибкой, и теперь это работает.

В чем причина такого поведения?

+0

это поведение из-за неопределенного поведения) – Andrew

+1

Вы можете попробовать отладить приложение, если у вас нет отладчика на этом компьютере, попробуйте использовать журнал, чтобы найти местоположение ошибки. – James

+0

Я думаю, что есть хорошие шансы, что вы получили предупреждения компиляции. Если нет, установите уровень предупреждения. И обратите внимание на предупреждения! –

ответ

1

Правильное отношение не то, что он не будет работать на некоторых машинах - это то, что «моя программа неправильно везде - это просто совпадению случается работать на некоторых машинах»

Наиболее вероятно неинициализированная переменная который, как представляется, указывает на пустую и нулевую память на , работающем, но указывает на нежелание других, или вы не проверяете, не сработало ли какое-то распределение, а у рабочей машины много воспоминаний. Другой распространенной проблемой является другая версия некоторой библиотеки времени исполнения.

Предложений:
Усильте уровень предупреждения от компилятора
Попробуйте отладки сборки - это обычно устанавливают все переменные к нулю
Это отличная возможность узнать о стеке свалках и удаленная отладка

+0

Может также быть полезно создать основные дампы для анализа состояния при сбое программы (если проблема не очевидна при отладке), также наличие базы данных символов (PDB?) Не может повредить конфигурацию выпуска. – Akanksh