的这一部分应该向每个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)

最佳答案

假设这是一个函数调用,我认为您不想使用对sz的引用进行插入。您应该改用malloc,以便在函数调用返回后该值不会丢失(然后您指向一个曾经是函数堆栈的随机存储器位置)。只要确保您也包含释放该内存的代码即可。

10-06 12:31