当我试图将我的节点添加到哈希表时,我遇到了seg错误。我已经使用了gdb,但无法确定我为何会收到此错误。
int symbol_add (sym_table_t* symTab, const char* name, int addr) {
int hash = 0;
int index = 0;
if(symbol_search(symTab, name, &hash, &index) == NULL){
struct node pointer = calloc (1,sizeof(struct node));
pointer->symbol.name = strdup(name);
pointer->symbol.addr = addr;
pointer->hash = hash;
pointer->next = symTab -> hash_table[index];
symTab->hash_table[index] = pointer;
return 1;
}
return 0;
}
答案 0 :(得分:1)
这段代码是否会编译?
struct node pointer = calloc (1,sizeof(struct node));
我认为应该改为以下内容:
struct node * pointer = calloc (1,sizeof(struct node));
答案 1 :(得分:1)
发布@bialpio时,将变量声明更改为struct node * pointer
。代码代表,编译代码或代码发布的代码不是真正的代码。
推荐更好的calloc()
样式,这样会遇到这种编码问题。
struct node *pointer = calloc(1, sizeof *pointer);
当然,并非所有警告都已启用。节省时间并启用它们。