[解決済み】main()でのreturn文とexit()の比較)
質問
を使用する必要があります。
exit()
または単に
return
の文は
main()
? 個人的には
return
というのは、他の関数を読むのと同じ感覚で、コードを読んでいるときのフロー制御がスムーズだからです(私見)。また、リファクタリングするにしても
main()
関数があることで
return
よりも良い選択と思われます。
exit()
.
は
exit()
は何か特別なことをするのでしょうか?
return
はないのですか?
解決方法は?
実は、そこに は がありますが、微妙な違いです。C++ではもっと意味があるのですが、違いは重要です。
を呼び出すと
return
で
main()
の場合、ローカルにスコープされたオブジェクトに対してデストラクタが呼び出されます。もし私が
exit()
,
ローカルにスコープされたオブジェクトのためにデストラクタが呼ばれることはありません!
読み直してみてください。
exit()
は返さない
. つまり、一度呼び出したら、後戻りはできないということです。その関数内で作成したオブジェクトは破棄されません。多くの場合、これは何の意味も持ちませんが、時にはファイルを閉じるようなこともあります(確かに、すべてのデータをディスクにフラッシュしたいですよね)。
なお
static
を呼び出したとしても、オブジェクトはクリーンアップされます。
exit()
. 最後に、もしあなたが
abort()
の場合、どのオブジェクトも破壊されません。つまり、グローバルオブジェクトもスタティックオブジェクトもローカルオブジェクトもデストラクタが呼ばれることはありません。
returnよりもexitを優先させる場合は、注意が必要です。
http://groups.google.com/group/gnu.gcc.help/msg/8348c50030cfd15a
関連
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】関数名の前に期待されるイニシャライザー
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] JavaScriptで複数の値を返す?
-
[解決済み] Bashスクリプトで、ある条件が発生したらスクリプト全体を終了させるにはどうしたらいいですか?
-
[解決済み] CとC++でmain()は何を返すべきですか?
-
[解決済み] 関数は return 文を1つだけ持つべきですか?
-
[解決済み] Bash関数におけるreturnとexitの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] 非常に基本的なC++プログラムの問題 - バイナリ式への無効なオペランド
-
[解決済み】C++プログラムでのコンソールの一時停止
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)
-
[解決済み] 配列のベクトルを扱う正しい方法