Googleが例外を使用しないGoogleのC++コーディング標準を読みました。例外が使用されない場合、プログラムでエラーが発生した場合、どのようにメモリを解放しますか?C++プログラムは、クラッシュすると自動的にメモリを解放しますか?
たとえば、f()はg()を呼び出し、g()にエラーがある場合はg()で割り当てられたすべてのメモリを解放してからf()に例外を呼び出す必要があります。 f()が例外をキャッチすると、f()はf()に割り当てられたすべてのメモリを解放し、プログラムを終了します。
例外が使用されず、g()にエラーがある場合は、強制終了してexit(0)
とすることができ、割り当てられたすべてのメモリを解放するのに十分なほどスマートになりますか?私の推測ですが、C++はスタックとヒープを維持していて、プログラムが終了すると自動的にスタックとヒープの両方を解放しますか?
通常、メモリを再利用するのはOSです。 –
プロセス全体がクラッシュした場合は、はい、メモリはosによって解放されます。プログラムがどの言語で書かれていても。 – clamp
例外を禁じれば、おそらく何かがC++であると主張するのはちょっと詐欺です。それはあなたの運転手に車を提供するようなものですが、燃料を使わない場合に限ります。 –