int PushOpponent(Opponent **opponents, int x, int y, int mov_x, int mov_y, int shield, int points, int dmg, unsigned char *sprite) {
Opponent *tmp = malloc(sizeof(Opponent));
if(!tmp) return 0;
tmp->x = x;
tmp->y = y;
tmp->mov_x = mov_x;
tmp->mov_y = mov_y;
tmp->shield = shield;
tmp->points = points;
tmp->dmg = dmg;
tmp->sprite = sprite;
tmp->prev = *opponents; // Avertissement : Assignment from incompatible pointer type
*opponents = tmp;
return 1; }
Le problème, c'est que quand j'utilise cette fonction pour ajouter un objet dans la liste, le programme crashe (au moins sur Virtual Ti), et me dit "Protected Memory Violation". Le compilateur me donne par ailleurs un avertissement à la ligne marquée sur le code, ce que je ne comprend pas, puisque, normalement, on passe à la fonction l'adresse (donc un double référence sur le premier élément de la liste) du tableau : **opponents devrait donc être le premier élément, et donc *opponents son adresse. Donc on déclare "struct Opponent *prev" dans la structure, et on utilise "tmp->prev = *opponents;" pour mettre dans le pointeur prev l'adresse du premier élément (qui devient le deuxième après l'ajout). La même erreur se retrouve dans la fonction censée libérer tous les éléments de la liste. Est-ce que j'ai faux quelque part? Merci de m'aider! Je joins également au post mon code source complet, donc si vous pouviez me donner quelques trucs pour l'améliorer, je vous en remercie!

