2016-10-19 7 views
0

スタックを使用すると少し錆びますので、明らかに間違っているかもしれません。私はスタックサイズを0に設定しようとするとsegfaultを取得するか、最初のif文が実行されたときにプッシュ機能でsegfaultを取得しています。以下のコードは、push関数の最初の行でsegfaultします。スタックサイズを0に初期化できません

typedef strcut Stack{ 
    Node data[UNIT_MAX]; 
    int size; 
} Stack; 

// 
Stack* DFS(Node* G, int numbVertices, Node v){ 
    //...More code above 
    Stack* S = NULL; 

    //Segfaulting when I try to set S->size = 0!!! 

    push(S,v); 


} 

// 
void push(Stack* S, Node d){ 
    if(S->size < UNIT_MAX){ 
     S->data[S->size++] = d; 
    } 
    else 
     exit(STACK_FULL); 
} 
+1

ヌルポインタに ' - >'を使用することはできません –

答えて

2
Stack* S = NULL; 

//Segfaulting when I try to set S->size = 0!!! 

確かにあなたのプログラムがクラッシュあなたが設定されているためSはNULLです。

(Stack *)(NULL) - > size = 0. NULLアドレスにアクセスするため、クラッシュすることがあります。

関連する問題