0
这部分可能应该总是返回相同的哈希值给每个密钥是不是? 但我发现它们相关的值会更改为每次更新的密钥...一个值应该是相同的但它会改变
如何在每次更新时修复每个密钥的相同值?
u_int64_t* ReturnValue=NULL;
u_int32_t a;
int sz;
a = nothl(as->addr32[0]);
sz = update(size);
if (ReturnValue=(u_int64_t*)g_hash_table_lookup(hashtable, (gpointer)&a))
{
g_hash_table_insert(hashtable, (gpointer)&a, (gpointer)ReturnValue);
// I didnt't use g_hash_table_replace() because it will free the key then the value change
}
else g_hash_table_insert(hashtable, (gpointer)&a, (gpointer)&sz)
@B米奇:请看看我的以下回答 – Ali 2011-05-30 11:55:21
@B米奇 是的“你指向一个随机存储位置”是正确的答案!谢谢 !!!现在我有另一个问题:我想更新每个@IP的音量。因此,例如在每个5秒后,我添加每个@IP(i)的V(i)。好吧现在它工作正常,但我的问题是,经过一段时间后,我发现有时相同的IP地址重复两次或甚至很多次,以便在输出中我发现相同的@IP重复了太多次。这就像是哈希表或类似的问题。下面是代码: – Ali 2011-05-30 11:56:19
'INT update_hashTable(...)' ''{' ...' 'u_int32_t *一个; A =(u_int32_t *)malloc的(的sizeof(u_int32_t));' '一个再用ntohl =(原样> addr32 [0]);' 'SZ =更新(大小);' '如果(返回值=(u_int32_t)g_hash_table_lookup(哈希表,一)){' '返回值+ = SZ;' 'g_hash_table_insert(哈希表,(gpointer)一,gpointer)返回值); ' '} \ N' '其他g_hash_table_insert(哈希表,(gpointer)A,(gpointer)SZ)}'' – Ali 2011-05-30 11:56:41