2011-07-09 10 views
0

プログラミングの長年を経て、合理的なmallocまたはnewが失敗する(おそらく、私のmallocが非常に妥当であるため)、私はいつもそれをチェックするが、リソース取得失敗の処理

私の場合、アプリは適切なログエントリで正常に閉じることを望みます。この場合、あなたは何をしますか?あなたのアプローチを聞くのは面白いです - あなたはリソースを待つのか、店を閉じるのですか?

+1

これはアプリケーションに完全に依存するでしょうか?ユースケースを決めると、適切な仕組みが明らかになります。これは私にとっては無意味な投票のようなものです... –

+0

これは、主観的な投票のように聞こえ、CやC++の言語特有のものでもないようです。 – Puppy

+0

このような状況で人々の考え方を知りたいです。はい、私はそれをプログラミングしているので、C、C++はちょうどです – Ulterior

答えて

0

ダイナミックアロケーションが失敗した場合、何もできません。その状況を処理する操作はほとんどありません。失敗した場合は、アプリをクラッシュさせてください。

+0

メッセージをボトルに入れて、キャプテンが最後のものを残すか、ちょうどクラッシュしますか? – Ulterior

+0

@ user757808:ボトルを割り当てることができない場合、どのようにメッセージをボトルに残すことができますか? I/Oライブラリは、特定のプラットフォームでは動的割り当てなしで動作するようには設計できません。 – Puppy

+0

@DeadMG - おそらくあなたのコアダンプを見て? – KevinDTimm

1

私は通常、可能な限り正常に私のプログラムをシャットダウンしています。シンプルログにはエラーメッセージが記録されています。 C++ではstd::bad_alloccatchmain()に入れることでこれを行います。 catchが実行されるまでに、スタックアンワインディングによって呼び出されたデストラクタはメモリを解放していたはずで、ロギング自体が失敗する可能性は低くなります。私はメモリ割り当てを避けます(たとえば、std::string文字列ではなくchar *文字列を使用して)ロギングコードを回避すると、ロギングの失敗をさらに減らすことができます。

関連する問題