Salut à toi, neokill@h
Plusieurs remarques :
1/ Quand tu écris :
Citation :
copy = my_alloc(); //alloue de la memoire copy = list;
|
ta deuxième ligne annule la première ! Ta fonction d'allocation te renvoie l'adresse d'une zone mémoire libe pour ton pointeur "copy", mais à la ligne du dessous tu remplaces cette adresse par celle contenue dans "list". En gros, "copy" n'est pas un double de "list", mais le même objet avec deux noms différents.
Je pense que ce que tu veux faire ressemble plutôt à ça :
copy = my_alloc(); //alloue de la memoire
*copy = *list; //duplique le contenu de "list" dans "copy"
2/ Ce que tu viens de faire, c'est uniquement la copie du premier élément de ta liste : il faut également faire cette opération pour les autres éléments.
3/ Du coup, tu devras modififer ta boucle. N'oublie pas de modifier "copy->prev", que tu avais oublié semble-t-il.
4/ Suivant la nature de "data", un memcpy sera peut-être le bienvenu.