Я понимаю, что ошибка набора происходит, когда вы пытаетесь получить доступ к памяти из объема вашей программы, но я не могу понять, где мое происходит, или почему. У меня есть определенный список: * ListType list = NULL;, , а затем я добавляю данные в список, вызывающий функцию добавления в главном: addNodeToList (& list, song);Сегментация-ошибка в C - Связанный список
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;
}
}
песня Я передаю правильно инициализирована, и я могу получить доступ к его элементам, так что я знаю, что не вызывает ошибку сегм. Любая помощь будет очень оценена!
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 - запустить его под вашим отладчиком и шаг за шагом. –
Кроме того, никакие декларации/определения данных не показаны, а отступ меньше, чем оптимальный :( –
По крайней мере, вы должны опубликовать определения «ListType» и «SongType» и «NodeType», но предпочтительно [MCVE] (http://stackoverflow.com/help/mcve) –