2015-01-31 2 views
1

У меня есть эта проблема в течение нескольких дней. Раньше я всегда думал, что разрешение выхода программы из основного и щелчка закрыть окно консоли - это то же самое, что и для завершения программы.нажмите закрыть окно консоли, чтобы завершить консольную программу C++, является правильным способом?

Однако я обнаружил, что они разные. Поскольку моя программа открывает камеру, которая является объектом. Закрытие окон консоли не уничтожает и не очищает объект. Поэтому в следующий раз, когда у меня появится ошибка, чтобы снова открыть камеру

Мне просто нужно подтвердить, верно ли это?

Тогда почему только до сих пор я вижу проблему?

ответ

1

Закрытие окна консоли в Windows, убивает запущенную программу (или стек запущенных программ). Если он не зарегистрировал обработчик для этого события, у него нет возможности очистить. Если вы хотите решения, зарегистрируйте обработчик.

Хм, консультируясь с документацией, подождите несколько секунд & hellip;

ОК, посмотрите SetConsoleCtrlHandler.

+0

благодарит за ответ! поэтому я не должен нажимать [x] в консольной программе, если я уже не позаботился о том, чтобы очистить –

1

Закрытие запуска консольного приложения убьет процесс, не давая вам шансов на любой код очистки. Я думаю, вы могли бы зацепить петлю сообщений Windows, чтобы уловить сообщение WM_CLOSE и выполнить правильную очистку, но в конце дня вы просто не должны убивать процесс.