gpt4 book ai didi

c++ - c++ 数组和内存错误

转载 作者:行者123 更新时间:2023-11-28 02:27:47 25 4
gpt4 key购买 nike

我一直致力于将我创建的批处理游戏转换为 C++ 以进一步改进,但遇到了很多问题,其中之一是我需要的节点矩阵(世界地图)数组。我需要一张 100 x 100 的 map ,每米有 20 个数据值。

 int nodeMatrix[99][99][19];

但它的问题是当我尝试设置 map 的空(或未生成)状态时,它崩溃并显示 (0xC0000005),所以我在脚本中添加了一个视觉对象打印正在重置的当前节点(虽然速度要慢得多),

void emptydata(){

int temp_x = 0;

int temp_y = 0;

int temp_t = 0;

do{

temp_y = 0;

do{

temp_t = 0;

do{

nodeMatrix[temp_x][temp_y][temp_t] = 0;

//visual

cout << temp_x << " " << temp_y << " " << temp_t << endl;

temp_t ++;

}while(temp_t <= 50);

temp_y ++;

}while(temp_y <= 99);

temp_x ++;

}while(temp_x <= 99);

}

它每次都在 99 14 10 崩溃,(它从零开始,所以 100 15 11),那是16500 bits的数据吗?

无论如何,它与内存分配有关吗?我想不通。

最佳答案

听起来您的问题是分配了一个 99 x 99 x 19 的数组,而不是 100 x 100 x 20 的数组。数组声明采用元素的数量,而不是最大索引。

我不确定您是如何达到 temp_y = 14 和 temp_t = 10 的,但这似乎可以通过它在 temp_x = 99 时崩溃的事实得到证实。

如果您发布实际的错误消息会更有帮助。


看来您还将 temp_t 限制为 50,而不是 20,但我认为这是一个错字。此外,作为文体说明,for 循环在 c++ 中更为常见,因为它们会为您处理索引。

关于c++ - c++ 数组和内存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29932156/

25 4 0