何年にもわたるプログラミングの後、私は常にそれをチェックしていますが、合理的なmallocまたはnewが失敗する状況はありませんでした(おそらく私のmallocが本当に合理的であるため)。
私の場合、アプリは適切なログエントリで正常に閉じる必要があります(願っています)。この場合、あなたはどうしますか?あなたのアプローチを聞くのは興味深いです-あなたはリソースを待つのですか、それとも店を閉めるのですか?
何年にもわたるプログラミングの後、私は常にそれをチェックしていますが、合理的なmallocまたはnewが失敗する状況はありませんでした(おそらく私のmallocが本当に合理的であるため)。
私の場合、アプリは適切なログエントリで正常に閉じる必要があります(願っています)。この場合、あなたはどうしますか?あなたのアプローチを聞くのは興味深いです-あなたはリソースを待つのですか、それとも店を閉めるのですか?
私は通常、エラーメッセージをログに記録するだけで、プログラムを可能な限り適切にシャットダウンします。C ++では、catch
でforを使用std::bad_alloc
してこれを行いmain()
ます。実行時までに、catch
スタックの巻き戻しによって呼び出されたデストラクタはメモリを解放しているはずなので、ロギング自体が失敗する可能性は低くなります。ロギングが失敗する可能性をさらに減らすために、そのロギングコードでメモリ割り当てを回避します(たとえば、char *
文字列ではなく文字列を使用することによって)。std::string
動的割り当てが失敗した場合にできることはほとんどありません。その状況を処理するために作成された操作はほとんどありません。失敗した場合は、アプリをクラッシュさせてください。