2011-11-06 74 views
3

我试图做到这一点在Vec3f组成的向量:限制vector.size()在for循环中

for (size_t i = 0; i < (mPoints.size() - 10) ; i++) { 
    glVertex3f(mPoints[i]); 
} 

但我总是得到一个运行时错误EXC_BAD_ACCESS ......如果不是大小()我使用int我得到相同的错误。如果相反,我只是使用大小()没有减法,它工作正常...

这是怎么回事?

回答

9

这听起来像你可能遇到一个问题,其中载体的元素少于10个。所以当你从一个无符号值中减去10时,实现可能会环绕并给你一个非常大的数字(基本上是max - 10)。因此,您尝试并遍历向量的边界。

试试下面的不是

for (size_t i = 0; i + 10 < vector.size(); i++) { 
    glVertex3f(mPoints[i]); 
} 
+0

感谢那些做到了!但令我感到困惑的是,矢量有数百个元素...... – Pier

+0

@Pier你确定在每种情况下都是这样吗?当vectory有超过10个元素时,我看不出原始代码会是什么问题。 – JaredPar

+0

嗯......我现在看到问题了。绘图函数在创建点的函数之前调用。所以第一次在矢量中没有点。 – Pier