我需要構建一個哈希表,但是我從Valgrind得到了應該在代碼中初始化的數組上的錯誤「使用大小爲8的未初始化值」 (你可以在HashTable的構造函數中看到)。指針陣列的「使用未初始化的值」錯誤
這裏的類魔術師:
class Magician{
public:
int magiID;
Magician(int id) : magiID(id) {}
};
這裏是一流的哈希表:
class HashTable {
public:
int k;//total size of the array
int mod;
Magician **array;
HashTable(int k): k(k) {
array = new Magician *[k];
for(int i = 0; i<k; k++) array[i] = NULL; //Initialization of the array
int mod(k);
while ((mod%10 == 0)||(mod%2 == 0)) {
mod--;
}
if(mod <= 1) mod = 2;
}
~HashTable(){
delete[] array;
}
int reHash(int x, int i){
return (x%mod + i);
}
void insertElement(Magician* m){
int id = m->magiID;
int j = 0;
while(array[reHash(id, j)%k] != NULL){ //Use of uninitialised value of size 8
j++;
}
array[reHash(id, j)%k] = m; //Use of uninitialised value of size 8
}
};
有問題的線(即在該方法insertElement)是誰試圖達到的東西的那些在數組中。我的初始化不好?如果是,那爲什麼?
什麼是'used(0)'用於它不是一個成員變量.. ?? 你是否缺少類定義中的東西? – Ajay
'for(int i = 0; i'i ++' –