将对象用作功能参数时程序崩溃

时间:2019-10-23 16:44:23

标签: c++

在将对象传递给我的函数时,它崩溃且未引发任何错误。我对为什么很困惑。我有一个预感,就是它的内存管理不善,这在我在程序中缺乏记忆力时很明显,但是这种崩溃是在我第一次运行该程序时发生的。如果有人能指出我的想法中的错误,我将不胜感激。这一切都是在我尝试使用哈希表实现地图的过程中发生的,其中存储桶的值是我的对象。

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(),但是该程序永远不会超过它的第一次执行。

0 个答案:

没有答案