Bonjour/Bonsoir à tous,
J'aimerai allouer dynamiquement une quarantaine de tableaux (de taille 576) :
é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
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;
Puis j'ai alloué dynamiquement chaque élément du tableau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 unsigned char* var[] = {var1, var2, var3, var4, var5, ..., var40};
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 < 40 ; i++) { var[i] = (unsigned char*) malloc (sizeof (unsigned char) * 576); }
J'ai donc deux questions :
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 }
- 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é) :
Je précise aussi qu'il n'y a pas d'erreur de compilation.
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; }
Voilà, merci et bonne soirée à vous tous !
Partager