我需要构建一个哈希表,但是我从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 ++' –