Bonjour à tous,

Je rencontre actuellement un problème avec les libérations dans une de mes fonctions récursive, à t'on le droit d'allouer et liberer de cette manière:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
void parcourir(parcours p, int nb_villes, int k,  bool * villeVisite){
 
  if(p->niveau == nb_villes){
    double dp=distanceParcours(p);
    for(int i=0; i<nb_villes; i++)
      printf("%d ",p->itineraire[i]);
    printf("%f \n",dp);
    if(dp < min->distance){
      min->distance = dp;
      copierItineraire(min->itineraire, p->itineraire, nb_villes);
    }
  }
 
  else{
    k_villes_pp tab = k_villesPlusProches( p->itineraire[p->niveau], villeVisite, k, nb_villes ); // allocation 1
    for(int i=0; i < k && i < tab->nb_vpp ; i++){
      bool * villeVisite_i = dupliquer(villeVisite, nb_villes); // allocation 2
      villeVisite_i[tab->vpp[i]]=true;
      parcours p_i = ajouterParcours( p, tab->vpp[i] ); // allocation 3
 
      parcourir(p_i, nb_villes, k,  villeVisite_i);
 
 
      memoire_liberer(villeVisite_i); // liberation 1
      memoire_liberer(p_i->itineraire); // liberation 2
    }
     memoire_liberer(tab->vpp); // liberation 3
 
  }
}
Merci d'avance pour vos contributions