Значение, которое должно быть таким же, но оно меняется - PullRequest
0 голосов
/ 06 мая 2011

Эта часть могла бы всегда возвращать одно и то же хеш-значение каждому ключу, не так ли? Но я считаю, что значения, связанные с ключами, они меняют при каждом обновлении ...

Как исправить одно и то же значение каждого ключа при каждом обновлении?

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)

1 Ответ

1 голос
/ 06 мая 2011

Я не думаю, что вы хотите вставить, используя ссылку на sz, предполагая, что это вызов функции. Вместо этого вы должны malloc, чтобы значение не потерялось после возврата вызова функции (и затем вы указываете на случайную область памяти, которая раньше была стеком вашей функции). Просто убедитесь, что вы включили код, чтобы освободить эту память тоже.

...