我正在尝试在由Vec3f组成的向量中执行此操作:
for (size_t i = 0; i < (mPoints.size() - 10) ; i++) {
glVertex3f(mPoints[i]);
}
但我总是得到运行时错误EXC_BAD_ACCESS ...如果不是size()我使用int我得到相同的错误。如果相反我只使用size()而没有减法,它可以正常工作......
发生了什么事?
答案 0 :(得分:9)
听起来你可能遇到的问题是向量中的元素少于10个。因此,当你从无符号值中减去10时,实现可能会回滚并给你一个非常大的数字(基本上是max - 10)。因此,您尝试迭代超过向量的边界。
请尝试以下
for (size_t i = 0; i + 10 < vector.size(); i++) {
glVertex3f(mPoints[i]);
}