我想在终端上打印数独游戏,我得到了这个结构:
javax.ws.rs.Application
我在主要功能中得到了这个:
#define SUDOKU_SIZE 9
typedef struct {
int grid[SUDOKU_SIZE][SUDOKU_SIZE];
} sudoku_t;
编译期间没有问题,但在执行过程中出现“Segmentation Fault(core dumped)”错误。
谢谢
[编辑] 好的,我使用了malloc,并在我的函数中免费使用, 但我仍然收到一个错误: *`./ingis'出错:free():下一个大小无效(快):0x0000000001e8d010 * 中止(核心倾销)
这是更新后的代码:
int main(int argc, char const *argv[]){
sudoku_t *s;
s->grid[0][0]=6;//manualy setting the value of the sudoku
...
s->grid[8][8]=7;
int k, l;
printf("\n");
for(k=0;k<SUDOKU_SIZE;k++){
for(l=0;l<SUDOKU_SIZE;l++){
int a=s->grid[k][l];
printf("%d", a);
}
printf("\n");
}
printf("\n");
return 0;
}
答案 0 :(得分:1)
在此定义之后
sudoku_t *s;
s
无处可指。
所以像这里一样解除引用
s->grid[0][0]= ...
尝试读取无效内存,并使用此方法调用未定义的行为。从现在开始,任何事情都可能发生。
要解决此问题,只需定义一个soduko_t
,而不仅仅是指向它的指针:
soduko_t s;
并用->
替换所有.
- 运算符。
或者你可以动态地分配内存
soduko_t * ps = malloc(sizeof *ps);
if (NULL == ps)
{
perror("malloc() failed");
exit(EXIT_FAILURE);
}
使用s
完成代码后,释放内存:
free(ps);
答案 1 :(得分:1)
您需要为结构分配内存。
<a href="#">
<div class="facebook button-big">
<i class="fa fa-facebook"></i>
</div></a>
<a href="#"><div class="youtube button-big dist">
<i class="fa fa-youtube"></i>
</div></a>
<a href="#"><div class="instagram button-big dist">
<i class="fa fa-instagram"></i>
</div></a>
答案 2 :(得分:1)
而不是像sudoku_t *s;
这样的指针,只需将其声明为普通变量sudoku_t s;
现在只需使用.
运算符代替->
运算符,如
s.grid[0][0] = 6;
...
s.grid[8][8] = 9;
...
int a = s.grid[k][l];