Сбой приложения из-за высокого входа - PullRequest
0 голосов
/ 17 октября 2011

Мое приложение завершается с сигналом 11 - ошибка сегментации.

Создан дамп ядра, и он говорит следующее:

#0  Players::shareExperience (this=0x7fd3f8187600,
    experience=401912970206.76483154296875, m=<value optimized out>,
    multiplied=<value optimized out>) at players.cpp:130
130                     (*it)->gainSharedExperience(tmpExperience, m                                                                                                                               , multiplied);

Это происходит, когда игрок убивает монстраи получите большой опыт.

По моему мнению, он не должен падать, потому что опыт в строке 130 равен long double, поэтому он должен справиться с этим.

Есть ли способ справиться с таким большим количеством цифр?Вероятно, это опыт, который получает игрок, когда убил монстра: experience=401912970206.76483154296875 не достаточно long double для этого достаточно?

1 Ответ

3 голосов
/ 17 октября 2011

Эта ошибка не из большого длинного двойного значения, скорее всего, из-за разыменования недействительного итератора в it (или итератора с недопустимым значением указателя).

...