访问struct字段的特定数组元素时,C程序崩溃

时间:2015-06-28 01:44:08

标签: c arrays pointers struct

我有这段代码:

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??");
}

2 个答案:

答案 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等函数。