我的应用程序终止于信号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中的无效迭代器(或具有无效指针值的迭代器)。

09-08 01:11