Ich verstehe, dass ein Fehler auftritt, wenn Sie versuchen, Speicher außerhalb des Bereichs Ihres Programms zuzugreifen, aber ich kann nicht herausfinden, wo meins passiert, oder warum. Ich habe eine Liste definiert: * ListType list = NULL;, und dann füge ich Daten zur Liste hinzu und rufe die Add-Funktion in main auf: addNodeToList (& Liste, Song);Segmentation-Fault in C - Verknüpfte Liste
void addNodeToList(ListType **list, SongType *song)
{
printf("Starting Add");
NodeType *newNode = malloc(sizeof(NodeType));
NodeType *currNode;
currNode = (*list)->head;
newNode->data = song;
newNode->next = NULL;
if(currNode == NULL) {
printf("List is Empty");
(*list)->tail = newNode;
(*list)->head = newNode;
}
else {
(*list)->tail->next = newNode;
(*list)->tail = newNode;
}
}
Das Lied, das ich vorbei bin richtig initialisiert, und ich kann es Elemente zugreifen, so weiß ich, dass nicht die seg Fehler verursacht. Jede Hilfe wäre sehr willkommen!
typedef struct Song {
char title[MAX_STR];
char artist[MAX_STR];
char album[MAX_STR];
char duration[MAX_STR];
} SongType;
typedef struct Node {
struct Node *next;
SongType *data;
} NodeType;
typedef struct List {
NodeType *head;
NodeType *tail;
} ListType;
OK - führen Sie es unter Ihrem Debugger und Schritt durch. –
Auch keine Datendeklarationen/Definitionen gezeigt, und Einrückung ist weniger als optimal :( –
Zumindest sollten Sie die Definitionen von 'ListType' und' SongType' und 'NodeType', aber vorzugsweise ein [MCVE] (http://stackoverflow.com/help/mcve) –