Здравствуйте,Есть ли какое-нибудь различие между вызовом exit() и использованием return в функции main() в C программе?
int main(void)
{
return 0;
}
int main(void)
{
exit(0);
}
> Есть ли какое-нибудь различие междуНу примерно около миллиона тактов процессора,
#include <stdlib.h> ... +19 символов в код,
и скорее всего на десяток байт распухнет бинарник.popq %rbp
retили
movl $0, %edi
call exit
>[оверквотинг удален]
> {
> return 0;
> }
>
В данном случае почти нету, кроме описанных павлинуксом выше. return прекращает работу функции и переводит выполнение обратно откуда была вызвана функция, exit() же завершает выполнение всей программы
Спасибо, момент прояснил.Вот некоторые выводы, которые я сделал.
#include <stdlib.h>
#include <unistd.h>int main(void)
{
// размер программы 8648
return 5; // start up код вызывает exit(); получается exit(main())
exit(5); // ISO C
// exit() закрывает I/O вызывая fclose()// следующие вызовы немедленно возвращают управления ядру
// размер программы немного больше 8696
_Exit(5); // ISO C (stdlib)
_exit(5); // POSIX (unistd)// если нет вызова exit() или return, то
// согласно С99 возвращается 0,
// до С99 возвращаемое значение не определено
}