我有这段代码:
Object {first: "firstvideo.html", second: "secondvideo.html", third: "thirdvideo.html"}
从评论中可以看出,程序在我崩溃时崩溃了 尝试访问数组的特定元素。 (更具体地说,Windows告诉我" a.exe已经停止工作"附带信息。)如果我使用其他的东西 对于第二维而言,该元素将是另一个元素。 如果我不使用结构,它不会崩溃。如果我使用int而不是bool, 它并没有崩溃。如果我创建结构的变量而不是指针,它 没有崩溃。
我在{+ 1}}上使用gcc 4.5.2版在Windows上进行编译。如果我使用ideone,它会运行 没问题。
有人能告诉我这里发生了什么吗?
Windows提供的有关崩溃的其他信息:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
struct game_s {
bool isOccupied[20][10];
};
int main() {
struct game_s* game_p;
game_p->isOccupied[0][8] = false;
printf("0,8 works\n");
game_p->isOccupied[2][8] = false;
printf("2,8 works\n");
game_p->isOccupied[1][7] = false;
printf("1,7 works\n");
game_p->isOccupied[1][9] = false;
printf("1,9 works\n");
game_p->isOccupied[1][8] = false; // crashes the program
printf("1,8??");
}
答案 0 :(得分:2)
尝试类似
的内容struct game_s* game_p = malloc(sizeof(struct game_s));
这样就分配了一个内存
答案 1 :(得分:1)
从评论看来,你可能不喜欢指针和内存分配。暂时尝试改变:
struct game_s* game_p;
到
struct game_s game_p;
这将消除您的内存损坏问题。
如果你需要使用指针并分配内存,你应该阅读内存分配和malloc和free等函数。