相关疑难解决方法(0)

C - 使用strcmp进行分段错误?

我似乎在strcmp函数的某处出现了分段错误.我还是C的新手,我不明白为什么它会给我错误.

int linear_probe(htable h, char *item, int k){
  int p;
  int step = 1;
  do {
    p = (k + step++) % h->capacity;
  }while(h->keys[p] != NULL && strcmp(h->keys[p], item) != 0);
  return p;
}
Run Code Online (Sandbox Code Playgroud)

GDB:

Program received signal SIGSEGV, Segmentation fault.
0x0000003a8e331856 in __strcmp_ssse3 () from /lib64/libc.so.6

(gdb) frame 1
#1  0x0000000000400ea6 in linear_probe (h=0x603010, item=0x7fffffffde00 "ksjojf", k=-1122175319) at htable.c:52
Run Code Online (Sandbox Code Playgroud)

编辑:插入代码和htable结构

int htable_insert(htable h, char *item){
  unsigned int k = htable_word_to_int(item);
  int p = k % h->capacity;

  if(NULL …
Run Code Online (Sandbox Code Playgroud)

c hashtable segmentation-fault

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

hashtable ×1

segmentation-fault ×1