【发布时间】:2014-02-27 22:33:38
【问题描述】:
程序收到信号 SIGFPE,算术异常。 xxx::init (this=0xbffe47fc, aa=0x0) at s.cc:1061 1061价格=100.0;
我只是尝试在不同的Linux机器RH5.6 32bit上编译和运行代码而不做任何修改,这个应用程序的所有者在RH5.3上编译它没有问题。
gdb bt
B::init
b_init
B::B
A::A
主要
这里是代码
class A : public B
{
A () : a_1(1)
{
init()
}
void init();
int a_1;
};
class B
{
double price;
B()
{
memset(this, 0, sizeof(*this);
b_init(this);
}
int b_init( B* b)
{
return b->init();
}
void init()
{
price = 100.0;
}
};
int main()
{
A a;
}
我看起来很正常。任何人都可以阐明它吗?谢谢!
【问题讨论】:
-
我们需要看看剩下的代码。
init是如何被调用的?aStruct怎么了? -
init() 中缺少参数??虽然它可能不是错误的确切原因。
-
请发一个真实的程序。我可以通过这样做得到类似的错误:
xxx *px; px->init(); -
我发布了更详细的示例代码。如果我在 price = 100.0 之前插入 double temp = 1.1,那么这条线将导致 FPE。
标签: c++ linux exception sigfpe