1

これが私の構造です:

typedef struct termNode{
    char term[41];
    int matched;
    struct termNode *next;
} termNode;

次のコードで問題なく動作します。

int add_term_to_list(char term[41]){
    int i = 0;  
    termNode *tmp = NULL;
    if(headTerm == NULL){
        if(create_head(term) != 0)
             return 1;
        else 
             return 0;
    }
    tmp = malloc(sizeof(termNode*));
    if(tmp == NULL)
        return 1;
    while(term[i] != '\n'){
        tmp -> term[i] = term[i];
        i++;
    }
    tmp -> term[i] = 0;
    tmp -> matched = 0;
    tmp -> next = NULL;
    currTerm -> next = tmp;
    currTerm = tmp;
    return 0;
}

ただし、構造体に別の変数を追加すると:

typedef struct termNode{
        char term[41];
        int matched;
        int size;
        struct termNode *next;
    } termNode;

次に、実行しようとするとセグメンテーション違反が発生します。これが私のコードの唯一の変更です。なぜこれが起こるのか誰か知っていますか?

コードを更新 -> make clean -> make -> run すると segfault が発生します。

4

0 に答える 0