簡體   English   中英

創建數組c ++時拋出的異常

[英]exception thrown when creating an array c++

我基本上使用這個算法在我的游戲中為平面生成一個數組,但是我無法讓它工作,因為我運行程序時出現異常。 (GLuint 只是 opengl 中的 unsigned int)

const GLuint planeDimension = 30.0f;
const GLuint half = planeDimension / 2;
const GLuint verticesCount = planeDimension * planeDimension;
int counter = 0;
GLfloat planeVertices[verticesCount];

for (GLuint length = 0; length < planeDimension; length++) {
    for (GLuint width = 0; width < planeDimension; width++) {
        planeVertices[counter++] = length - half;
        planeVertices[counter++] = 0.0f;
        planeVertices[counter++] = width - half;
    }
}

您正在循環中訪問數組外部。 您的循環對planeVertices每個元素都進行了一次迭代。 但是每次循環都會將counter遞增 3 次。 因此,通過所有循環counter大約 1/3 將到達數組的末尾,然后您將開始在數組外寫入,這會導致未定義的行為。

我不確定你想做什么。 為什么每次循環都要寫數組的 3 個不同元素? 所以目前還不清楚如何修復它。 您可以簡單地將其聲明為 3 倍:

GLfloat planeVertices[verticesCount * 3];

或者您可以將其聲明為二維數組:

GLfloat planeVertices[verticesCount][3];

然后你的循環會做:

planeVertices[counter][0] = length - half;
planeVertices[counter][1] = 0.0f;
planeVertices[counter][2] = width - half;
counter++;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM