小编xMu*_*elx的帖子

修改“__cxa_allocate_exception”不使用malloc

我在一个安全的嵌入式系统中工作,我想稍微修改一下异常处理。__cxa_allocate_exception使用malloc()为异常对象分配内存。malloc/new在安全应用程序中是不允许的,所以我必须重写它。

现在我的问题是:在这种情况下有没有办法避免 malloc?

一些替代方案是:

  • 使用静态缓冲区,这会导致多任务/多核应用程序出现问题,所以我不能这样做。
  • 在堆上写入也会引起一些麻烦,因为堆可能已满(内存不足抛出不起作用)。
  • 最后,也许我可以分配(例如)16kb 的任务堆栈空间,并且每个异常对象的大小都是 1kb。这样,我最多可以处理 16 个异常。可悲的是,我对堆栈的理解很低,如果它有任何意义或什至可能的话,就对其进行评级。

c++ malloc gcc exception-handling exception

4
推荐指数
2
解决办法
1571
查看次数

查询关于c ++中的double

在解决特定网站上的问题时,我编写了以下代码:

#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)

然后它打印完整的数字.我究竟做错了什么?

c++ double

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

是否允许在构造函数中创建新变量

我想知道在构造函数中创建临时变量是否允许/良好实践?我只需要变量作为函数的返回值类似于:

class A
{
  private: 
    int var;
  public:
    A(); 
};

A:A()
{
   var = 0;
   int tmp_var = somefunction();
   ...
   Some Code
   ...
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor

1
推荐指数
1
解决办法
56
查看次数

标签 统计

c++ ×3

constructor ×1

double ×1

exception ×1

exception-handling ×1

gcc ×1

malloc ×1