-4

程序收到信号 SIGFPE,算术异常。xxx::init (this=0xbffe47fc, aa=0x0) at s.cc:1061 1061 price = 100.0;

我只是尝试在不同的linux机器RH5.6 32bit上编译和运行代码而不做任何修改,这个应用程序的所有者在RH5.3上编译它没有问题。

gdb BT

B::初始化

b_init

乙::乙

一个::一个

主要的

这是代码

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;
}

我看起来很正常。任何人都可以阐明它吗?谢谢!

4

1 回答 1

0

这个测试代码对我来说很好。一定有别的事情发生吧?

#include <iostream>
using namespace std;

struct teststruct
{
  int a;
  double b;
};

class test_class
{
public:
  void init( struct teststruct * );
  double getPrice();
private:
  double price;
};

void test_class::init( struct teststruct *test )
{
  price = 100.0;
}

double test_class::getPrice()
{
  return price;
}

int main ()
{
  struct teststruct a;
  test_class test;

  test.init(&a);
  cout << "Double " << test.getPrice() << endl;

  return 0;
}

输出:

[hendric@Linux-Test-System ~]$ g++ doubletest.cpp 
[hendric@Linux-Test-System ~]$ ./a.out
Double 100
于 2014-02-28T02:25:50.553 回答