gpt4 book ai didi

c - 为什么我的代码中出现段错误?

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:50 25 4
gpt4 key购买 nike

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

我试着在谷歌上搜索解决方案。

这是我当前的代码:

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 ]

此外,您没有使用正确的类型来存储 mvinch 的结果。在 curses.h 中它说:

typedef unsigned long chtype;

所以你应该按如下方式分配内存:

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

并打开编译器的警告,因为编译器应该已经标记了这个错误。

关于c - 为什么我的代码中出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55540672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com