我正在研究嵌入式处理器(400 MHz Intel PXA255 XScale),我想我看到了一个没有足够内存来满足“新”操作的案例。程序没有崩溃,所以我认为其他线程已经释放了它们的内存,这只是暂时的。这是一些非常关键的代码,因此不能退出,并且需要将某种错误返回给远程用户。
以下小修复是否足以解决问题,还是有更好的方法?在用以下代码替换每个“新”之前,我想我会问。
char someArr[];
do{
someArr = new char[10];
Sleep(100); // no justification for choosing 100 ms
} while ( someArr == NULL );
睡眠有帮助吗?我应该设置一些最大重试次数吗?是否可以在任何地方使用静态初始化?
最后更新:非常感谢您提供的有用回复,但事实证明在检查内存分配失败的代码中存在错误。不过,我会牢记所有这些答案,并尽可能多地替换 malloc 和 new (尤其是在错误处理代码中)。