Aus welchen Gründen treten Segmentierungsfehler auf? In dem folgenden Code versuche ich eine einfache Möglichkeit zu erstellen, verknüpfte Listen zu verwenden. Grundsätzlich in meinem Programm erstellen Sie nur eine Liste mit dem Strukturtyp LinkedList. Es gibt jedoch eine Zeile im Programm, die einen Segmentierungsfehler verursacht. Warum passiert das? Jede Hilfe würde sehr geschätzt werden. Danke :)Warum tritt ein Segmentierungsfehler auf?
#include <stdio.h>
#include <stdlib.h>
struct node{
int num;
struct node *next;
};
//Make the struct
typedef struct {
struct node * first;
struct node * current;
}linkedList;
void addNode(linkedList list, int a);
void addFirstNode(linkedList list, int b);
//Function prototypes
int main() {
linkedList list;
addFirstNode(list, 1);
addNode(list, 2);
addNode(list, 3);
addNode(list, 4);
addNode(list, 5);
addNode(list, 6);
addNode(list, 7);
}
void addFirstNode(linkedList list, int input) {
list.first = (struct node *)malloc(sizeof(struct node)); //Make first node
list.first -> num = input; //Fill first node
list.current = list.first;
}
void addNode(linkedList list, int input) {
struct node * newNode = (struct node *)malloc(sizeof(struct node));
newNode -> num = input;
list.current -> next = newNode; //Segmentation fault! (core dumped)
list.current = newNode;
}
, die die Codezeile, die Segmentierungsfehler verursacht? – satheeshwaran
C hat kein Konzept eines Segmantierungsfehlers. Undefiniertes Verhalten verhält sich - definitionsgemäß - nicht definiert. Wir sind kein Debugging-Dienst, lesen Sie [ask]. Genau das: Ihre Funktionsschnittstellen sind kaputt. C ist streng pass-by-value. – Olaf
[Nicht das Ergebnis von 'malloc' in C] werfen (http://stackoverflow.com/q/605845/995714) –