私は組み込みプロセッサ (400 MHz Intel PXA255 XScale) に取り組んでいますが、「新しい」操作を満たすのに十分なメモリがないケースが 1 つあると思いました。プログラムはクラッシュしなかったので、他のスレッドがメモリを解放したと推測しましたが、これは一時的なものでした。これは非常に重要なコードであるため、終了することはできず、何らかのエラーをリモート ユーザーに返す必要があります。
問題を解決するには、次の小さな修正で十分でしょうか、それとももっと良い方法がありますか? すべての 'new' を次のコードに置き換える前に、質問したいと思いました。
char someArr[];
do{
someArr = new char[10];
Sleep(100); // no justification for choosing 100 ms
} while ( someArr == NULL );
睡眠は役に立ちますか?再試行の最大回数を設定する必要がありますか? どこでも静的初期化を使用できますか?
最終更新:有益な回答をありがとうございましたが、メモリ割り当ての失敗をチェックするコードにエラーがあったことが判明しました。私はこれらの答えをすべて心に留めておき、できるだけ多くの malloc と new を置き換えます (特にエラー処理コードで)。