[英]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.