new
/ delete
和malloc
/有free
什么区别?
相关(重复?):在什么情况下我使用malloc vs new?
new
除了分配内存和调用构造函数之外,运算符还有什么其他的东西?
我正在研究嵌入式处理器(400 MHz Intel PXA255 XScale),我想我看到一个没有足够内存来满足"新"操作的情况.该程序没有崩溃,所以我假设其他线程已经释放了他们的记忆,这只是一个短暂的事情.这是一些非常关键的代码,因此退出不是一个选项,需要将某种错误返回给远程用户.
以下小修补程序是否足以解决问题,还是有更好的方法?在用以下代码替换每个'new'之前,我想我会问.
char someArr[];
do{
someArr = new char[10];
Sleep(100); // no justification for choosing 100 ms
} while ( someArr == NULL );
Run Code Online (Sandbox Code Playgroud)
睡眠有帮助吗?我应该设置一些最大重试次数吗?是否可以在任何地方使用静态初始化?
最后更新:非常感谢您提供有用的响应,但事实证明在代码检查中存在错误的内存分配错误.我会记住所有这些答案,尽可能多地替换malloc和new(特别是在错误处理代码中).