使用堆栈时我有点生疏,所以这里可能会出现明显的错误。当我尝试将堆栈大小设置为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);
}
答案 0 :(得分:1)
Stack* S = NULL;
//Segfaulting when I try to set S->size = 0!!!
当然你的程序崩溃是因为你设置S是NULL。
(Stack *)(NULL) - &gt; size = 0.由于您访问NULL地址,肯定会崩溃。