-3
我一直试图在C中实现一个LinkedList
以实际实现我在C中学到的理论。我一直得到一个Segmentation fault: 11.
任何有关如何解决这个问题的帮助将不胜感激。这里是我的代码:Segmentation Fault 11,C
#include <stdio.h>
#include <stdlib.h>
struct Element {
int value;
struct Element *nextElement;
};
struct LinkedList {
struct Element *firstElement;
};
void add(struct LinkedList *list, int value) {
if(list->firstElement == NULL) {
struct Element *newElement;
newElement = malloc(sizeof(struct Element));
newElement->value = value;
list->firstElement = newElement;
} else {
struct Element *lastElement;
lastElement = list->firstElement;
while(lastElement->nextElement != NULL) {
lastElement = lastElement->nextElement;
}
struct Element *newElement;
newElement = malloc(sizeof(struct Element));
newElement->value = value;
lastElement->nextElement = newElement;
}
}
void showAllElements(struct LinkedList *list) {
struct Element *lastElement = list->firstElement;
while(lastElement != NULL) {
printf("%d\n", lastElement->value);
lastElement = lastElement->nextElement;
}
}
int main()
{
struct LinkedList list;
add(&list, 5);
add(&list, 10);
add(&list, 15);
showAllElements(&list);
return 0;
}
先用gdb检查一下。 –
@SouravGhosh你能告诉我gdb是什么吗? –
您使用'malloc'分配的每个内存都应该使用'free'释放。所以你需要自己管理记忆,那就是做记录并确保没有记忆泄漏。请参阅:https://en.wikipedia.org/wiki/C_dynamic_memory_allocation#Common_errors –