无法将堆栈大小初始化为0

时间:2016-10-19 02:59:35

标签: c segmentation-fault stack

使用堆栈时我有点生疏,所以这里可能会出现明显的错误。当我尝试将堆栈大小设置为0时,我要么得到一个段错误。当第一个if语句执行时,我的push函数中出现了段错误。下面的代码将在推送功能的第一行中进行段错误。

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 个答案:

答案 0 :(得分:1)

Stack* S = NULL;

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

当然你的程序崩溃是因为你设置S是NULL。

(Stack *)(NULL) - &gt; size = 0.由于您访问NULL地址,肯定会崩溃。