【发布时间】:2013-12-13 21:04:11
【问题描述】:
我有一个数组,其中包含数组中每个索引的键和信息。
这会构建数组
table_t *table_construct (int table_size, int probe_type)
{
int i;
table_t *hash;
if(table_size < 1) return NULL;
hash = malloc(sizeof(table_t));
hash->table = malloc(sizeof(list_t*) * table_size);
for(i=0; i < table_size - 1; i++)
{
hash->table[i] = NULL;
//hash->table[i]->next = NULL;
}
hash->size = table_size;
hash->probing_type = probe_type;
return hash;
}
所以我有 list_t 和 table_t 结构。我的代码中有以下行无法正常工作:
hash->table[item]->K = K;
在我的这部分代码中可以看到:
int dec, item, hold;
item = hashing(hash,K);
hold = item;
if(hash->table[item] == NULL)
{
hash->table[item]->K = K;
hash->table[item]->I = I;
return 0;
}
当我 GDB 时,K 是一个数字。
所以这里发生的事情是,我的表是用 item.index 索引的。然后我将 K 添加到索引的键中。当这条线出现在我的程序中的任何地方时,我都会得到一个段错误。
你能看出我在这里做错了什么吗?
【问题讨论】:
-
那么,您是否为
table数组分配了内存?然后你是否为从table元素指向的每个list_t对象分配了内存?你必须向我们展示你是如何做到的。 -
不知道你是如何在
table中分配项目的,这将很难提供帮助...... -
我现在就添加我的构造函数。
-
到目前为止,您还没有显示
hash->table[i]被设置为除 NULL 之外的任何内容... -
我在行的地方添加了。我第一次尝试时项目为 0
标签: c hash struct segmentation-fault