2011-11-06 45 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