我的应用程序终止于信号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
吗? 最佳答案
该错误不是由大的long double值引起的,很可能是因为取消引用了it
中的无效迭代器(或具有无效指针值的迭代器)。