プログラムをメモリ不足にすると、ユーザーに警告し、おそらく警告を出して、ほんの一部を解放しようとします。状況を表示するために必要なGUIエンティティを事前に割り当てることができますが、私の懸念は、この状況ではファイルのオープンや書き込みなど、より基本的な操作がcstdio
を使用するということです。「メモリ不足」エラーをメモリに書き込まないでファイルに書き込む?
私の質問はです。プログラムがもはや動的にメモリを割り当てることができない場合は、まだcstdio
を使用することはできますか?ファイルを開いたままにしたり、バッファを使用しないように設定したりするなど、必要な特別な対策はありますか? cstring
の機能は引き続き機能しますか?このようなシナリオで知るべき他の障害の可能性はありますか?
(ユーザに警告すると、この場合には豪華であり、主な目的は、そのために、ユーザに警告し、cstdioを有する関連データを救出しようとし、その後、ファイルにエラーを記録することである)
それは遅すぎるかもしれないが、あなたは十分**連続した領域を割り当てることができない場合でも、同じエラーを持っている**ので、他の操作は1つも割り当て要求あれば動作する可能性失敗しました。空きメモリがスレッショルド**未満になると(このチェックを実行する頻度は、割り当てパターンによって異なります)、ユーザー(およびログ)に警告することをお勧めします。 –
今、メモリはあらかじめプールされておらず、必要に応じてOSから取得したばかりです。 (すぐにそれを変更する必要があります)。メモリの割り当て方法は、ロギング/警告後に割り当てを再試行します。プログラムがそれ以降にさらにメモリを割り当てようとしない限り(またクラッシュを引き起こす)、シナリオが変更されない限り、回復することができます(うまくいけば!) –
私が取り組んだゲームの中でこれを解決しようとした方法の1つは、例外ハンドラを登録するときにバッファを割り当てることでした。例外が発生した場合、バッファを解放し、ハンドラが書き出す必要なデータ。 –