0

好的,所以我有一个简单的函数,可以从 5 张牌扑克手中返回最高的非对子牌。但我遇到的问题很奇怪。随机出现这个随机总线错误,不知道是什么原因。我以为这是我使用的打印语句,但现在我不确定。我知道它看起来一团糟,但是如果您查看下面我打印“测试打印”字样的行,有人可以告诉我为什么在此行之后立即出现总线错误并且没有到达第二个“测试打印” “ 陈述。我的程序可能内存不足吗???这可能没有意义,但我真的想不出其他任何东西(请排除稍微令人困惑的代码):

int Hand::highestNonPair(int *face_array_exclude, int size)
{
    int highest = 0;
    int contains_excludable = 0;
    int i = 0;

    if(this->hasAnother(i) == false)
            highest = cards[i]->getFace();


    for(i= 0;i<cards.size();i++)
    {
        if((cards[i+1]->getFace() > cards[i]->getFace()) &&
        (this->hasAnother(i) == false)){
            if(size>0){
                for(int c = 0;c<size;c++){
                    if(cards[i]->getFace() == face_array_exclude[c])
                            contains_excludable = 1;
                    }
             }

                 if(!contains_excludable)
            highest = cards[i+1]->getFace();

        cout<<\nTEST PRINT"<<endl;
        contains_excludable = 0;
        cout<<\nTEST PRINT"<<endl;
        }
    }

    return highest;
}
4

1 回答 1

3

该位可以解决问题:

if((cards[i+1]->getFace() > cards[i]->getFace()) &&

作为 的最高值i可能是cards.size() - 1。这意味着这cards[i+1将是一个无效的条目。

改变循环:

for(i= 0;i<cards.size();i++)

for(i= 0;i<cards.size() - 1;i++)

也许

于 2013-02-28T18:15:45.750 回答