这部分可能应该总是返回相同的哈希值给每个Key不是吗? 但我发现与每次更新后更改的密钥相关的值......
如果有更新,如何修复每个密钥的相同值?
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)
答案 0 :(得分:1)
我认为您不想使用对sz
的引用进行插入,假设这是一个函数调用。您应该malloc
这样,以便在函数调用返回后不会丢失该值(然后您指向一个曾经是函数堆栈的随机内存位置)。只需确保包含代码即可释放此内存。