Bonjour à tous,
En essayant de faire du malloc, je suis tombé sur quelque chose de "bizarre". Peut-être que mon code est en cause, le voici :
- J'ai un main qui crée autant de tableau que donné dans le ligne de commande, c'est-à-dire n.
Code :
- main(int argc, char **argv)
- {
- int n , i;
- int **board;
- n = atoi(argv[1]);
- nb_tab=0;
- board=(int**)malloc(n * sizeof(int*)); // création de la table
- for(i=0;i<n;i++)
- {
- board = (int*)malloc(n * sizeof(int));
- init(i,n,board);
- nb_tab++;
- }
- }
|
- Puis, une fonction 'cree' qui ajoute des lignes aux tableaux suivant l'analyse de ceux-ci.
Code :
- cree(int nt, int **t, int n)
- {
- t[nt] = (int *)malloc(n * sizeof(int));
- nb_tab++;
- printf("board [%d] creee\n", nt);
- }
|
Pour le peu qu'on utilise la fonction 'cree' comme suit :
Code :
- for(i=4;i<30;i++)
- {
- cree(i,board,n);
- }
|
Systématiquement, la création de tableaux s'arrête sur l'indice 22. Pas de segmentation fault, juste le curseur qui continue de clignoter sans rien que se passe.
Ma question donc : peut-on utliser comme cela indépendamment des [i]malloc dans une fonction annexe ? Si oui, où est l'erreur ?
A noter que, compilé sous Linux avec cc, l'algo ne pose pas de problème. Le problème n'apparaît que sous Win (devcpp aussi bien avec Mingw/GCC 2.95.3 que 3.2).
Merci d'avance
Message édité par thadawg le 18-03-2003 à 13:29:41