相关疑难解决方法(0)

279
推荐指数
8
解决办法
19万
查看次数

C++ new运算符除了分配和ctor调用之外还做了什么?

new除了分配内存和调用构造函数之外,运算符还有什么其他的东西?

c++ new-operator

8
推荐指数
2
解决办法
1万
查看次数

动态内存分配失败恢复

我正在研究嵌入式处理器(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(特别是在错误处理代码中).

c++ embedded viper new-operator windows-ce

6
推荐指数
2
解决办法
3315
查看次数