为什么会出现分段错误?

时间:2013-12-01 07:55:14

标签: c segmentation-fault

我有这个代码,它是处理数据库(作为链表)的库的一部分:

char *db_getVal(char *key, Node *database) { 
    while(database != NULL){
        if(strcmp(key, database->key) == 0){ 
            return database->value;
        }else{
            database = database->next;
        }
    }
    return NULL;
}

当我使用数据库中存在的密钥时,它工作正常,但是当我输入一个没有的密钥时,我会遇到分段错误。那是为什么?

2 个答案:

答案 0 :(得分:1)

确保最后一个元素的next成员设置为NULL。如果未明确设置,则可能是某些垃圾值不是NULL但是如果访问则会导致程序收到分段错误。

答案 1 :(得分:0)

生成数据库链接时,请确保其最后一项database-> next设置为null