2016-10-19 2 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 주소에 액세스하기 때문에 충돌이 발생합니다.

관련 문제