Allouer dynamiquement plusieurs variables
Bonjour/Bonsoir à tous,
J'aimerai allouer dynamiquement une quarantaine de tableaux (de taille 576) :
Code:
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:
1 2
|
unsigned char* var[] = {var1, var2, var3, var4, var5, ..., var40}; |
Puis j'ai alloué dynamiquement chaque élément du tableau :
Code:
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:
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:
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 ! :)