在将对象传递给我的函数时,它崩溃且未引发任何错误。我对为什么很困惑。我有一个预感,就是它的内存管理不善,这在我在程序中缺乏记忆力时很明显,但是这种崩溃是在我第一次运行该程序时发生的。如果有人能指出我的想法中的错误,我将不胜感激。这一切都是在我尝试使用哈希表实现地图的过程中发生的,其中存储桶的值是我的对象。
struct Bucket{
Bucket* next;
Object value;
char* key;
};
class Hash_table_m{
Bucket* arr[20]; //const size
int element_count;
public:
int hash_function(char *str);
Hash_table_m(): arr{{}}{}
~Hash_table_m(){}
int size(){return element_count;}
bool empty(){return (element_count == 0);}
Object find(char*);
void put(char*, Object CD);
void erase(char*);
};
void hash_table_m::put(char* key, Object value){
int index = 1; //test index
Bucket* new_entry;
new_entry->key = key;
new_entry->value = value; //crashes here
if(arr[index] == NULL){
arr[index] = new_entry;
}
else{
Bucket *seeker;
seeker = arr[index];
while(seeker->next != NULL){
seeker = seeker->next;
}
seeker->next = new_entry;
}
}
运行此命令的结果是程序崩溃,没有错误消息。我曾尝试连续多次运行put(),但是该程序永远不会超过它的第一次执行。