Bon afin d'expliquer ce code je crée dynamiquement ma matrice opt dans le main puis dans une fonction stockersolution je redéfinis la taille de la matrice suivant la valeur de taille que je modifie suivant les conditions.
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
opt= (int**)malloc((taille)*sizeof(int*));
for(i=0; i<taille; i++)opt[i]= (int*)malloc((nbNoeuds+2)*sizeof(int));
 
void stockersolution(int *j,int fmax,noeud *sol,int **opt,int * taille)
{
    int i=0,l=0,ancien=0,nouveau=0, valeur=0;
 
    if(fmax<best)
    {
        *taille=1; 
        opt= (int**)realloc(opt,(*taille)*sizeof(int*));
        for(i=0; i<*taille; i++)opt[i]=NULL;
        for(i=0; i<*taille; i++)opt[i]= (int*)realloc(opt[i],(nbNoeuds+2)*sizeof(int));
    }
    else{
 
        if(fmax=best){
            ancien =(*taille); 
            (*taille)++;
            opt= (int**)realloc(opt,*taille*sizeof(int*));
            for(i=ancien; i<*taille; i++)opt[i]=NULL;
            for(i=0; i<*taille; i++)opt[i]= (int*)realloc(opt[i],(nbNoeuds+2)*sizeof(int));
        }
    }
}
ceci ne marche pas et me renvoie l'assertion crtisvalidheappointer !!