Débutant en liste chainée

Je suis débutant en C , et j'ai un projet à faire mais malheuresement j'ai eu beaucoup de problème.
Pour commencer , j'ai fait une fonction qui initialise une liste chainée V par les c premiers éléments d'une autre liste chainée X .
Lorsque j'exécute le programme , il me signale l'erreur " a cessé de fonctioner" (windows 8)

void initialisation_clusters(personne *X, clusters *V ,int c)
{


clusters *first,*p,*precedV;
personne *tmpoX ;
tmpoX = (personne *)malloc(sizeof(personne));
tmpoX=X;

double num1, num2; int i ;first=precedV=NULL;
num1=tmpoX->perso.taille;
num2=tmpoX->perso.poids;
for (i=1;i<c;i++)
{p=(clusters *) malloc( sizeof(struct clusters) );
p->centre.taille = num1;
p->centre.poids = num2;
if (first==NULL) first=p;
else precedV-> next =p;
precedV=p;
tmpoX=tmpoX->next;
num1=tmpoX->perso.taille;
num2=tmpoX->perso.poids;
}

}

4 réponses

  1. tu utilises quoi comme compilateur?
    as tu un anti-virus, si oui lequel?
    1
    1. J'ai oublié les structures
      typedef struct coordonnees coordonnees;
      struct coordonnees
      {
      double taille ;
      double poids ;
      };

      typedef struct personne personne;
      struct personne
      {
      coordonnees perso;
      personne* next;
      };

      typedef struct clusters clusters;
      struct clusters
      {
      coordonnees centre ;
      clusters *next;
      };
      0
      1. Code blocks,
        Oui j'utilise Windows Defender comme anti-virus
        0
        1. Contributeur
          Bonjour,

          tmpoX = (personne *)malloc(sizeof(personne));
          tmpoX=X; 
          

          Belle fuite de mémoire ;-). Tu alloues une zone (malloc) et ensuite tu écrases le pointeur sur cette zone par X Twww.g
          (donc plus de free() possible).
          0