Исключение с плавающей точкой, вызванное присвоением значения переменной типа double

Программа получила сигнал SIGFPE, Арифметическое исключение. xxx::init (this=0xbffe47fc, aa=0x0) по цене scc:1061 1061 цена = 100,0;

Я просто пытаюсь скомпилировать и запустить код без каких-либо изменений на другой машине Linux RH5.6 32bit, и владелец этого приложения скомпилирует его на RH5.3, который не имеет проблем.

GDB BT

B:: INIT

b_init

B:: B

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

Я выгляжу очень нормально для меня. Кто-нибудь может пролить свет на это? Спасибо!

1 ответ

Этот тестовый код отлично работает для меня. Там должно быть что-то еще происходит?

#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
Другие вопросы по тегам