由print语句引起的总线错误
bus error caused by print statement
好的,我有一个简单的函数,从5张牌的扑克牌中返回最大的非对牌。但我现在的问题很奇怪。有一个随机的总线错误随机发生,我不知道是什么原因。我以为是我用的打印语句,但现在我不确定了。我知道它看起来很乱,但是如果你看看下面我打印单词"test print"的那行,有人能告诉我为什么在这行之后立即有一个总线错误,它没有到达第二个"test print"语句。我的程序内存不足了吗??这可能没有意义,但我真的想不出其他任何东西(请排除稍微令人困惑的代码):
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;
}
位可以大小写问题:
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++)
也许相关文章:
- 总线错误,堆上分配的内存
- 总线错误 10 - 字符 * 数组
- C/C++ 字符串错误与 ARM SEG 故障总线错误
- 获取总线错误:10 并附加字符串
- 多维矢量总线错误
- 链表的总线错误(核心转储)
- C 结构中的总线错误
- 如何解决此总线错误
- 调用虚拟方法导致总线错误
- 尝试打印数组时出现总线错误和奇怪的输出
- 尝试在共享内存中写入时发生总线错误
- C++ 总线错误:尝试解析和更新字符串时出现 10
- 我在以下代码中收到总线错误
- 总线错误:10 还有更多索引要去
- 使用链表的动态队列//总线错误:10(C++)
- 快速修复程序给出的总线错误
- 总线错误10或分段错误11
- C++ 在类成员"无符号长"上使用"^="和"<<"时出现总线错误
- 析构函数中的模拟总线错误
- 试图获取vector迭代器的值时出现总线错误10