gpt4 book ai didi

c - 数组结构无法正常工作

转载 作者:行者123 更新时间:2023-11-30 15:42:13 25 4
gpt4 key购买 nike

我有一个数组,其中包含数组中每个索引的键和信息。

这构建了数组

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 索引的。然后我将 K 添加到索引的键中。当这条线出现在我的程序中的任何地方时,我都会收到一个段错误。

你能看出我在这里做错了什么吗?

最佳答案

您已验证指针为空,因此在引用它之前,您需要为其分配一些内容:

   if(hash->table[item] == NULL)
{
hash->table[item] = malloc(sizeof(list_t)); // you were missing this.
hash->table[item]->K = K;
hash->table[item]->I = I;
return 0;
}

关于c - 数组结构无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20255734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com