Allocation memoire : malloc ou pas malloc dans ce cas ci ...
AsM0DeUz
Messages postés19Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention 4 février 2009
-
23 mars 2007 à 10:30
AsM0DeUz
Messages postés19Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention 4 février 2009
-
23 mars 2007 à 12:29
Bonjour,
Je voudrais remplir un tableau avec le contenu d'un fichier texte avec le code ci-dessous :
#define MaxBoardSize 10
int main()
{
char board[MaxBoardSize][MaxBoardSize];
Je me demande si la definition du tableau qui est soulignée réserve la memoire ou bien je dois faire un malloc ? parce que quand j'execute ca plante avec un probleme de memoire : The system DLL kernel32.dll was relocated in memory. The application will not run properly ...
- Pq tu mets (char *)board et pas char * board ?
- Qd on a un tableau a 2 dimensions, il faut passer au moins une des dimensions a la fonction non ? void initboard(void initboard(char *bd[MaxBoardSize]) ou void initboard(char *bd, int height, int width) par exemple ? non ?
- bd += MaxBoardSize; qd tu fais ca, t'es sur que chaque ligne du tableau est contigue en memoire ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 23 mars 2007 à 11:45
Ben justement, ca marche dans cet exemple car ton allocation est contigue ( equivalent a char board[MaxBoardSize * MaxBoardSize];
- Pq tu mets (char *)board et pas char * board ?
(char *)board -> cast char** en char*
- Qd on a un tableau a 2 dimensions, il faut passer au moins une des
dimensions a la fonction non ? void initboard(void initboard(char
*bd[MaxBoardSize]) ou void initboard(char *bd, int height, int width)
par exemple ? non ?
Le problème n'est pas le nombre de dimension mais l'accès a tes données, si elles sont contigues, il suffit de connaitre l'adresse du premier element. Si pas contigu, tu ne peut pas faire
bd += MaxBoardSize; mais bd[i++] (en gros...)