На самом деле быть аккуратным может быть интересно, когда ваша программа развивается. Это заставляет вас писать функцию очистки при создании функций «инициализации». Преимущество возникает, когда ваша программа становится более сложной, и вы хотите перезапустить часть программы. Если вы уже написали рабочие функции очистки, менее вероятно, что вы вдруг забыли очистить, когда перезапускаете часть своей программы.
Написание функций очистки «лениво», т. Е. Только тогда, когда вам нужно, это более подвержено ошибкам. Написание функций очистки заставляет вас думать об очистке и возможной зависимости от очистки. Это позволяет более простое повторное использование кода части вашего кода в другом проекте.
Итак, да, освобождение в atexit бесполезно, и поэтому закрывается дескриптор файла.Однако писать и поддерживать функцию очистки по мере роста вашего кода может быть ограничением, которое заставит вас задуматься о том, что вы делаете.
Звучит как обман, см. Http://stackoverflow.com/questions/2213627/when-you- экзит-ас-приложение-это-заместитель таНос-эд-память автоматически освобожденная. – unwind