EXPORT char* MPQHashTableInit(char **ppHashTable, long nTableLength) { long i = 0; char *p = NULL; MPQHASHTABLE *_pHashTable = NULL; /* 检查nTableLength是否为2的幂次方 */ //assert(nTableLength&(nTableLength-1)==0); g_hash_mask = nTableLength - 1; InitCryptTable(); p = malloc(nTableLength * sizeof(MPQHASHTABLE)); if (p == NULL) { printf("%s, %d: malloc failed!\n", __FUNCTION__, __LINE__); return p; } *ppHashTable = p; _pHashTable = (MPQHASHTABLE *)p; for (i = 0; i < nTableLength; i++) { (_pHashTable + i)->nHashA = 0; (_pHashTable + i)->bExists = 0; } return p; }
StringHash::StringHash(const long nTableLength /*= MAXTABLELEN*/) { InitCryptTable(); m_tablelength = nTableLength; //初始化hash表 m_HashIndexTable = new HASHTABLE[nTableLength]; for ( int i = 0; i < nTableLength; i++ ) { m_HashIndexTable[i].nHashA = -1; m_HashIndexTable[i].nHashB = -1; m_HashIndexTable[i].bExists = false; } }