exc_bad_access(code = 2 address = 0x0)

时间:2013-02-18 23:14:46

标签: objective-c c exc-bad-access

我是新手,试图制作扫雷应用程序

我用IBButton来重置雷区 这是结构的2乘2矩阵

- (IBAction) Reset {
    for (int x = 0 ; x < 10 ; x ++) {
       for (int y = 0 ; y < 10 ; y++ ) {
           f[x][y]->isOpen = NO;
           f[x][y]->display = 0; //Going to make a search function for finding Number of mines next to it
           int random = arc4random()%10;
           if (random < 2) {
               f[x][y]->isMine = YES;
           } else {
               f[x][y]->isMine = NO;
           }
        }
    }

所以我在for循环的第一行得到了错误 F [X] [Y] - &GT; ....

我在这里做错了什么?

/编辑

这是我宣布我的f

的方式
struct feild *f[10][10];
struct feild{
    bool isOpen;
    bool isMine;
    int display;
}

1 个答案:

答案 0 :(得分:1)

您没有为f分配任何空格,因此f[x][y]只会包含垃圾内存,然后->isOpen = NO访问权限就会爆炸。

你需要做类似

的事情
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        f[i][j] = malloc(sizeof(struct feild));
    }
 }
在您的代码之前