#c #segmentation-fault #stack
#c #ошибка сегментации #стек
Вопрос:
Я немного устал от использования стеков, поэтому здесь может быть что-то явно неправильное. Я либо получаю ошибку segfault при попытке установить размер моего стека равным 0, либо получаю ошибку segfault в моей функции push при выполнении первого оператора 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. Вы не можете использовать
->
для нулевого указателя
Ответ №1:
Stack* S = NULL;
//Segfaulting when I try to set S->size = 0!!!
Конечно, сбой вашей программы из-за того, что вы установили S, равен NULL.
(Stack*)(NULL)-> size = 0. Это обязательно приведет к сбою, потому что вы обращаетесь к нулевому адресу.