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