2016-10-19 2 views
0

initialisiert werden. Ich bin ein bisschen eingerostet, wenn ich Stacks verwende, damit hier offensichtlich etwas nicht stimmt. Ich bekomme entweder einen segfault, wenn ich versuche, meine Stack-Größe auf 0 zu setzen. Ich erhalte einen segfault in meiner Push-Funktion, wenn die erste if-Anweisung ausgeführt wird. Der folgende Code wird in der ersten Zeile der Push-Funktion segfault.Die Stapelgröße konnte nicht auf 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

Sie können nicht '->' auf einen Nullzeiger verwenden –

Antwort

2
Stack* S = NULL; 

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

Sicherlich Ihr Programmabsturz, weil Sie setzen S ist NULL.

(Stack *) (NULL) -> Größe = 0. Es ist sicher, abzustürzen, weil Sie auf die NULL-Adresse zugreifen.

Verwandte Themen