Я получаю, что такое segfaults и что их вызывает, мой вопрос - почему мой указатель вызывает их? Я пытаюсь написать простой связанный список, который добавляет на узлы, содержащие 5, и я получаю segfault в temp-> x = 5 ;. Я думал, что malloc() должен был позволить мне доступ к памяти, в которой он нуждается?Нужна помощь Понимание ошибок сегментации
#include <stdio.h>
#include <stdlib.h>
struct node{
int x;
struct node *next;
};
void append(struct node *root){
struct node *temp, *right;
temp = (struct node *)malloc(sizeof(struct node));
temp->x = 5;
right = (struct node *)root;
while(right->next != NULL){
right = right->next;
}
right->next = temp;
right = temp;
}
int main(){
struct node *root;
root = NULL;
int userInput;
printf("Pick Operation: ");
scanf("%d", &userInput);
if(userInput == 1){
append(root);
}
}
'root = NULL;' .. 'append (root);' as' append (NULL); '..' right = (struct node *) root; 'as' right = NULL; '..' while (right-> next! = NULL) {'as' while (NULL-> next! = NULL) {' – BLUEPIXY
не может разыменовать NULL-указатель ' root = NULL; '' right = root; ' разыменован здесь' while (right-> next! = NULL); ' – cmidi
Как всегда, стандартное предупреждение: в' c', не выдавать результат 'malloc()'. Очевидно, что лить «корень» в свой собственный тип является излишним. –