我在一个安全的嵌入式系统中工作,我想稍微修改一下异常处理。__cxa_allocate_exception使用malloc()为异常对象分配内存。malloc/new在安全应用程序中是不允许的,所以我必须重写它。
现在我的问题是:在这种情况下有没有办法避免 malloc?
一些替代方案是:
在解决特定网站上的问题时,我编写了以下代码:
#include <iostream>
int main()
{
long l{12345678912345};
char ch{'a'};
double d{14049.30493};
std::cout << l <<'\n' << ch <<'\n' << d <<'\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,双倍的输出是14049.3,而不是全数.如果我明确提到
std::cout.precision(10);
Run Code Online (Sandbox Code Playgroud)
然后它打印完整的数字.我究竟做错了什么?
我想知道在构造函数中创建临时变量是否允许/良好实践?我只需要变量作为函数的返回值类似于:
class A
{
private:
int var;
public:
A();
};
A:A()
{
var = 0;
int tmp_var = somefunction();
...
Some Code
...
}
Run Code Online (Sandbox Code Playgroud)