为什么我的代码出现分段错误?

xSlendiX游戏

当我用GCC编译我的代码然后运行它时,当我在我的代码中调用函数时,它会打印出:“分段错误(内核已转储)”。

我尝试在Google上搜索解决方案。

这是我当前的代码:

char ** saveLevelPositions() {
  int x, y;
  char ** positions;
  positions = malloc(sizeof(char *) * 25);

  for (y = 0; y < 25; y++) {
    positions[y] = malloc(sizeof(char) * 100);

    for (x = 0; x < 100; x++) {
      positions[x][y] = mvinch(y, x);
    }
  }

  return positions;
}

我希望该功能能够正常运行,并且只会给出细分错误。

编辑:对于一些上下文,这是到GitHub项目的链接:https : //github.com/xslendix/rogue

保罗·奥吉维

至于其他的答案和评论所指出的,你应该换你的x和y的使用,所以
positions[x][y]应该是positions[y][x]

另外,您没有使用正确的类型存储的结果mvinchcurses.h上面说:

typedef unsigned long chtype;

因此您应该按以下方式分配内存:

chtype ** positions;
positions = malloc(sizeof(chtype *) * 25);
positions[y] = malloc(sizeof(chtype) * 100);

并打开编译器警告,因为编译器应已标记此错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么运行此代码时出现分段错误?

为什么Fortran代码会出现分段错误?

为什么该程序出现分段错误?

为什么我的GTK +信号回调出现分段错误?

为什么我收到信号时出现分段错误

为什么我的以下代码出现分段错误?

为什么我出现了weak_ptr分段错误

我只是想知道为什么以下代码在执行时不会出现分段错误

谁能告诉我为什么我在此C代码中出现分段错误?

为什么代码显示分段错误?

难以理解为什么我的代码中出现分段错误(核心已转储)

为什么会出现分段错误?

为什么这段代码会出现分段错误?

为什么我的 Java 代码出现错误?

我不明白为什么这段代码会出现分段错误。拜托,谁能告诉我我在哪里分配了无法使用的内存

为什么更改此代码时会出现“分段错误”错误?

为什么我的 psubd xmm 内存出现分段错误?

为什么我在以下代码中出现分段错误?

为什么在我第一次在我的代码中插入一个项目后我的代码中出现分段错误

为什么我的 C++ 代码显示分段错误

为什么这段代码会出现分段错误?

为什么会出现此分段错误?

无法找出为什么我会出现分段错误

为什么在我的程序中出现分段错误?

为什么会出现分段错误?我究竟做错了什么?

为什么此代码段会出现分段错误?

错误分段错误 - 为什么我的代码不断地无限调用我的递归函数?

是什么导致我的代码出现分段错误,我该如何解决?

为什么我的代码给出分段错误错误?