是什么导致此功能出现分段错误?

时间:2019-11-06 00:04:27

标签: c segmentation-fault

我正在编写一个函数,用于搜索2D字符数组以查找列表中的单词。我遇到分段错误,可能是由于我根据回溯设置了while循环,但我看不到是什么原因造成的。

以下是我认为该错误所在的函数的代码。注意:这只是水平搜索的一部分。

Program received signal SIGSEGV, Segmentation fault.
0x0000000008000fd2 in searchWord (j=0, k=0, gridsize=15, arr=0x8403260, list=0x84032e0, listPos=49)
    at arraysearch.c:110
110                     while(i < strlen(*(list+listPos)) && *(*(arr+(j+i))+k) == *(*(list+(listPos+i)))){
(gdb) bt
#0  0x0000000008000fd2 in searchWord (j=0, k=0, gridsize=15, arr=0x8403260, list=0x84032e0, listPos=49)
    at arraysearch.c:110
#1  0x0000000008000ed4 in searchPuzzle (arr=0x8403260, n=15, list=0x84032e0, listSize=50) at arraysearch.c:96
#2  0x0000000008000d70 in main (argc=2, argv=0x7ffffffee048) at arraysearch.c:68

这就是回溯告诉我的。

div

1 个答案:

答案 0 :(得分:0)

我修复了细分错误。我正在访问列表中的单词,而不是单词中的字母。

*(*(list+(listPos+i)))

需要

*(*(list+listPos)+i)