これは機能します:
struct list
{
int value;
struct list *next;
};
void addElement(struct list **l, int value)
{
if( *l == 0 )
{
*l = (struct list *) malloc(sizeof(struct list));
(*l)->value = value;
(*l)->next = 0;
}
else
{
struct list *new_element = (struct list *) malloc(sizeof(struct list));
new_element->value = value;
new_element->next = *l;
*l = new_element;
}
}
void printList(struct list *l)
{
struct list *temp;
for(temp = l;temp; temp = temp->next)
printf("%d ->", temp->value);
printf("%d",0);
}
int main(int argc, char **argv)
{
printf("Einfache verkettete Liste: ");
struct list *mylist;
int i;
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
printList(mylist);
return 0;
}
出力:
Einfache verkettete Liste: 10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->10 ->0
しかし、私が変更した場合:
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
addElement(&mylist,10);
に:
for(i=0;i<10;i++)
addElement(&mylist,10);
実行時にメモリエラーが発生しますか? 非常に紛らわしく、何が起こっているのかわかりません。デバッグする方法は?