1. ホーム
  2. c++

[解決済み】main()でのreturn文とexit()の比較)

2022-04-08 06:38:59

質問

を使用する必要があります。 exit() または単に return の文は main() ? 個人的には return というのは、他の関数を読むのと同じ感覚で、コードを読んでいるときのフロー制御がスムーズだからです(私見)。また、リファクタリングするにしても main() 関数があることで return よりも良い選択と思われます。 exit() .

exit() は何か特別なことをするのでしょうか? return はないのですか?

解決方法は?

実は、そこに がありますが、微妙な違いです。C++ではもっと意味があるのですが、違いは重要です。

を呼び出すと returnmain() の場合、ローカルにスコープされたオブジェクトに対してデストラクタが呼び出されます。もし私が exit() , ローカルにスコープされたオブジェクトのためにデストラクタが呼ばれることはありません! 読み直してみてください。 exit() は返さない . つまり、一度呼び出したら、後戻りはできないということです。その関数内で作成したオブジェクトは破棄されません。多くの場合、これは何の意味も持ちませんが、時にはファイルを閉じるようなこともあります(確かに、すべてのデータをディスクにフラッシュしたいですよね)。

なお static を呼び出したとしても、オブジェクトはクリーンアップされます。 exit() . 最後に、もしあなたが abort() の場合、どのオブジェクトも破壊されません。つまり、グローバルオブジェクトもスタティックオブジェクトもローカルオブジェクトもデストラクタが呼ばれることはありません。

returnよりもexitを優先させる場合は、注意が必要です。

http://groups.google.com/group/gnu.gcc.help/msg/8348c50030cfd15a