Bonjour,

Je veux allouer de la mémoire dynamiquement pour 4 tableaux à 2 dimensions mais lors de l'éxécution, le test m'informe que l'allocation est impossible. Je programme sous labwindows CVI 8.5. Voici le code:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
TabTimePalAlim=(int**) calloc(5,sizeof(int*));
  for(i=0; i<NbAlim; i++)
   TabTimePalAlim[i]=(int*) calloc(5,sizeof(int)); 
 
  if(TabTimePalAlim[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
 
   for(i=0; i<5; i++)
    {
    free(TabTimePalAlim[i]);
    TabTimePalAlim[i]=NULL;
    }
   free(TabTimePalAlim);
   TabTimePalAlim=NULL;
   }
 
  TabValPalAlim=(double**) calloc(5,sizeof(double*));
  for(i=0; i<NbAlim; i++)
   TabValPalAlim[i]=(double*) calloc(5,sizeof(double));
 
  if(TabValPalAlim[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
 
   for(i=0; i<5; i++)
    {
    free(TabValPalAlim[i]);
    TabValPalAlim[i]=NULL;
    }
   free(TabValPalAlim);
   TabValPalAlim=NULL;
   }
 
 
  TabTimePalCh=(int**) calloc(5,sizeof(int*));
  for(i=0; i<NbCharge; i++)
   TabTimePalCh[i]=(int*) calloc(5,sizeof(int));
 
  if(TabTimePalCh[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
 
   for(i=0; i<5; i++)
    {
    free(TabTimePalCh[i]);
    TabTimePalCh[i]=NULL;
    }
   free(TabTimePalCh);
   TabTimePalCh=NULL;
   }
 
  TabValPalCh=(double**) calloc(5,sizeof(double*));
  for(i=0; i<NbCharge; i++)
   TabValPalCh[i]=(double*) calloc(5,sizeof(double));
 
  if(TabValPalCh[i]==NULL)
   {
   MessagePopup("Erreur!!!", "Erreur lors de l'allocation de mémoire!");
 
   for(i=0; i<5; i++)
    {
    free(TabValPalCh[i]);
    TabValPalCh[i]=NULL;
    }
   free(TabValPalCh);
   TabValPalCh=NULL;
   }
A chaque démarrage, le problème reviend. J'ai essayer avec la fonction malloc et l'allocation se fait correctement mais lors de la réallocation de mémoire (realloc) les problèmes reviennes (run time error:Attempt to realloc pointer to freed memory ).
voici la réallocation pour infos:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
TabTimePalAlim=realloc(TabTimePalAlim, NbAlim*sizeof(int*));
     TabTimePalAlim=realloc(TabTimePalAlim, NbPal*sizeof(int));
 
     if(TabTimePalAlim == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabTimePalAlim[i]);
      TabTimePalAlim[i]=NULL;
      }
     free(TabTimePalAlim);
     TabTimePalAlim=NULL;
     }
 
 
     TabValPalAlim=realloc(TabValPalAlim, NbAlim*sizeof(double*));
     TabValPalAlim=realloc(TabValPalAlim, NbPal*sizeof(double));
 
     if(TabValPalAlim == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabValPalAlim[i]);
      TabValPalAlim[i]=NULL;
      }
     free(TabValPalAlim);
     TabValPalAlim=NULL;
     }
 
     TabValPalCh=realloc(TabValPalCh, NbAlim*sizeof(double*));
     TabValPalCh=realloc(TabValPalCh, NbPal*sizeof(double));
 
     if(TabValPalCh == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabValPalCh[i]);
      TabValPalCh[i]=NULL;
      }
     free(TabValPalCh);
     TabValPalCh=NULL;
     }
 
     TabTimePalAlim=realloc(TabTimePalCh, NbAlim*sizeof(int*));
     TabTimePalAlim=realloc(TabTimePalCh, NbPal*sizeof(int));
 
     if(TabTimePalCh == NULL)
     {
     for(i=0; i<NbPal; i++)
      {
      free(TabTimePalCh[i]);
      TabTimePalCh[i]=NULL;
      }
     free(TabTimePalCh);
     TabTimePalCh=NULL;
     }
Pourriez vous me dire quel est le problème?

Je vous remercie.