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
@B 미치 예 "네가 임의의 메모리 위치를 가리키고 있습니다"라고 대답했습니다 !! 감사 !!! 이제 또 다른 질문이 있습니다. 볼륨을 각 @IP로 업데이트하고 싶습니다. 예를 들어 각 5 초 후에 각 @IP (i)의 V (i)를 더합니다. 좋아 이제는 잘 작동하지만 내 문제는 특정 기간이 지나면 동일한 IP 주소가 두 번 또는 심지어 여러 번 반복되어 출력에서 동일한 IP가 너무 많이 반복된다는 것을 알게됩니다. 그것은 해시 테이블이나 그와 비슷한 것에 문제가있는 것과 같습니다. 여기서 코드 : – Ali
INT update_hashTable '(...)' ''{... ''' u_int32_t * A는; A = (u_int32_t *)의 malloc (sizeof 연산자 (u_int32_t)) ' 'A = ntohl (시스 -> addr32 [0]);'' SZ = 업데이트 (크기),'' 경우 (에 ReturnValue = (u_int32_t) g_hash_table_lookup (해시 테이블, a)) { ' '에 ReturnValue = + SZ,'' g_hash_table_insert (해시 테이블 (gpointer)는, gpointer)에 ReturnValue); '' } \ n' '다른 g_hash_table_insert (해시 테이블 (gpointer)는 (gpointer) SZ)}'' – Ali