2012-09-26 32 views
0

我寫C++代碼的圖形程序,並在其中我要收集所有的座標以後解析them.I'm試圖使用相同的載體,但下面的錯誤返回:向量下標越界,調試斷言失敗

調試斷言失敗
計劃:....
文件:....
線932
表達:向量下標越界

這裏是我的代碼部分:

std::vector<float> coordinates; 
//random code 
if(dnew >= 0) 
{ 
    x = x + 1.0; 

    glPointSize(1.5f); 
    glColor3f(0.0,1.0,1.0); 
    glBegin(GL_POINTS); 
    glVertex2f(x, y); 
    glEnd(); 
    dnew = dnew + a; 
    if(t == 1) 
    { 
     coordinates.push_back (x); 
    } 
} 

cout <<coordinates[1]; 

當我按下重試帶我到stdthrow.cpp並指向以下行:

_CRTIMP2_PURE void __CLRCALL_PURE_OR_CDECL _Debug_message(const wchar_t *message, const  wchar_t *file, unsigned int line) 
{ 
    // report error and die 
    if(::_CrtDbgReportW(_CRT_ASSERT, file, line, NULL, message)==1) 
    { 
     ::_CrtDbgBreak(); 
    } 
} 
+2

什麼是你的問題?這個錯誤非常明顯。 (你最有可能隱藏包含錯誤的代碼的''.....在'for'聲明。) –

+1

的(......)?我們需要真正的迴路來回答你的問題。 – ForEveR

+1

我們不需要看到'爲(.....)'...拿去....我們只猜... –

回答

2

該錯誤可能會導致如果coordinates.size()<= i,例外是提出這給你,你試圖訪問元素進行矢量

的界限
1

你只有一個元素推入座標的信息,所以唯一有效的索引是0。因此,這是一個超過矢量的末尾的圖像。

此外還有兩個條件可以防止發生這種情況的一個push_back,所以很可能是,您的向量是空的。但你無條件地訪問矢量的第二個元素。

+0

不,我絕對寫在這個問題中放下一個實例,這個回退在我的代碼中完成了好幾次。 – parth

+0

你怎麼想我們幫你找出錯誤,當你保留的代碼可能引發的呢?我們只能判斷我們能看到什麼。 – Nobody