Я читаю этот вопрос, и есть ответ, объясняющий, почему использование exit() плохо, потому что:
- В результате у вас будет несколько точек выхода из программы
- Он делает код более запутанным (например, с помощью goto)
- Он не может освободить память, выделенную во время выполнения
Я должен уточнить, что я использую Qt, поэтому код уже немного "запутан", так как я использую сигналы и слоты. При этом, для вопроса № 1, я вижу, что это связано с №2, но мой код в настоящее время пытается избежать использования exit(), потому что мне сказали, что это сделает мой код похожим на беспорядок, но избегать exit сделал это беспорядок. У меня есть функции, которые не должны ничего возвращать, возвращая вещи. Например, когда у меня есть регистрация пользователей, и их имя пользователя уже существует, вместо того, чтобы просто вызвать exit() после того, как пользователь не выполнил регистрацию пользователя (что является желательным поведением в этой ситуации), я возвращаю false к функции, которая возвращает false к другой функции, которая затем возвращает false в мою основную часть, которая затем проверяет, вернулась ли эта функция true или false, и если она возвращает false, то она возвращает 0. Так много, чтобы избежать exit() сделать код чистым.
Для третьей проблемы, не используя exit(0), сообщите ОС, что программа выполнена, и ОС освободит эту память в любом случае? Я запускал тестовый пример, который использует exit(0), когда я нажимаю кнопку, и процесс удаляется из списка процессов, и память освобождается, так почему же это даже проблема? Кажется, это откровенное ложное утверждение, по крайней мере, в Windows.