Bonjour/Bonsoir à tous,

J'aimerai allouer dynamiquement une quarantaine de tableaux (de taille 576) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
unsigned char* var1;
unsigned char* var2;
unsigned char* var3;
unsigned char* var4;
unsigned char* var5;
unsigned char* var6;
//...
unsigned char* var39;
unsigned char* var40;
étant donné que je suis un petit développeur assez fainéant, je ne voulais pas utiliser une quarantaine de fois la fonction malloc(), j'ai donc stocké les 40 variables dans un tableau :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
unsigned char* var[] = {var1, var2, var3, var4, var5, ..., var40};
Puis j'ai alloué dynamiquement chaque élément du tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for (int i = 0 ; i < 40 ; i++)
{
    var[i] = (unsigned char*) malloc (sizeof (unsigned char) * 576);
}
Le problème, c'est que cela ne marche pas, en effet lorsque j'essaye d'enregistrer des valeurs dans la variable var1, le programme plante systématiquement.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
for (int i = 0 ; i < 10 ; i++)
{
    var1[i]=0; //ne fonctionne pas
}
J'ai donc deux questions :
  • Pourquoi mon code ne marche pas?
  • Comment puis-je corriger ce problème?


Le code en entier (j'ai supprimé quelques variables pour une meilleure lisibilité) :

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
 
int main(int argc, char* argv[]){
    unsigned char* var1;
    unsigned char* var2;
    unsigned char* var3;
    unsigned char* var4;
    unsigned char* var5;
    unsigned char* var6;
    unsigned char* var7;
    unsigned char* var8;
    unsigned char* var9;
    unsigned char* var10;
 
 
    unsigned char* var[] = {var1,var2,var3,var4,var5,var6,var7,var8,var9,var10};
 
    for (int i = 0 ; i < 10 ; i++)
    {
        var[i] = (unsigned char*) malloc (sizeof (unsigned char) * 576);
    }
 
    for (int i = 0 ; i < 10 ; i++)
    {
        var1[i]=0; //ne marche pas
    }
 
    return 0;
 
}
Je précise aussi qu'il n'y a pas d'erreur de compilation.

Voilà, merci et bonne soirée à vous tous !