蒸的士泥鸭 2023-08-03 22:04 采纳率: 50%
浏览 11
已结题

不知道有没有谁能看出来问题在哪的,编译器报错访问冲突

编译器报错: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突。
我是真的不晓得错在哪里啊,希望有高人能指出并告诉我该怎么修改。


#include<stdio.h>
#include<easyx.h>
#include<time.h>
#include<fstream>


struct fang_kuai
{
    int ceng;//第几层
    int row, col;//第几行,第几列
    int x, y;
    int lei_xing;//方块类型
    bool top;//true没有被覆盖,false被覆盖
    int bian_jie_x ,bian_jie_y;//这一层的第一个方块的边界
};

struct fang_kuai** maps[48] = { 0 };

IMAGE imgb_j[2];//背景
IMAGE FANG_KUAI[15][2];


//初始化层
void CENG(int ceng, int rows, int cols, int bian_jie_x, int bian_jie_y) {
    maps[ceng] = (struct fang_kuai**)malloc(sizeof(struct fang_kuai*) * (rows * cols+1));
    for (int row = 0; row < rows; row++) {
        for (int col = 0; col < cols; col++) {
            maps[ceng][row * cols + col] = (struct fang_kuai*)malloc(sizeof(struct fang_kuai));
            maps[ceng][row * cols + col]->bian_jie_x = bian_jie_x;
            maps[ceng][row * cols + col]->bian_jie_y = bian_jie_y;
            maps[ceng][row * cols + col]->row = row;
            maps[ceng][row * cols + col]->col = col;
            maps[ceng][row * cols + col]->lei_xing = 1 + rand() % 15;
            maps[ceng][row * cols + col]->top = true;
            maps[ceng][row * cols + col]->x = bian_jie_x + col * 61;
            maps[ceng][row * cols + col]->y = bian_jie_y + row * 68;
            maps[ceng][row * cols + col]->ceng = ceng;
        }
    }
    maps[ceng][rows * cols] = NULL;
}

//方块的布局构建
void initMAP() {
    int i = 0;
    for (i; i < 12; i++) {
        CENG(i, 1, 1, 30, 440 + i * 10);
    }
    for (i; i < 24; i++) {
        CENG(i, 1, 1, 414, 440 + (i - 12) * 10);
    }
    for (i; i < 30; i++) {
        CENG(i, 1, 1, 94, 583 + (i - 24) * 10);
    }
    for (i; i < 36; i++) {
        CENG(i, 1, 1, 346, 583 + (i - 30) * 10);
    }
    for (i; i < 42; i++) {
        CENG(i, 1, 1, 30 + (i - 36) * 10, 130);
    }
    for (i; i < 48; i++) {
        CENG(i, 1, 1, 413 - (i - 42) * 10, 130);
    }

}

//加载图片
void loading() {
    loadimage(&imgb_j[0], "./res/bg1.png");
    loadimage(&imgb_j[1], "./res/bg2.png");
    srand(time(NULL));
    char fileName[256];
    for (int i = 0; i < 15; i++) {
        for (int j = 0; j < 2; j++) {
            sprintf_s(fileName, sizeof(fileName), "./res%d_%d.png", i + 1, j);
            loadimage(&FANG_KUAI[i][j], fileName);
        }
    }
}

//绘制图片
//就是在此代码段报错的
void hui_zhi() {
    putimage(0, 0, &imgb_j[0]);
    for (int i = 0; i < 48; i++) {
        for (int k = 0; maps[i][k]; k++) {    
            struct fang_kuai* p = maps[i][k];
            IMAGE* img = &FANG_KUAI[p->lei_xing - 1][p->top];
            putimage(p->x, p->y, img);
        }
    }
}



int main() {
    initgraph(504, 1000);
    loading();
    while (1) {
        hui_zhi();
        initMAP();
    
    }



    return 0;
}
  • 写回答

1条回答 默认 最新

  • P2441M 2023-08-03 22:17
    关注

    hui_zhi 用到了 maps[i][k],而 initMAP 调用在 hui_zhi 之后,maps 还没有初始化。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月3日
  • 已采纳回答 8月3日
  • 创建了问题 8月3日

悬赏问题

  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作
  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId