[C/C++]Petit problème de malloc

Petit problème de malloc [C/C++] - C++ - Programmation

Marsh Posté le 18-03-2003 à 13:27:36    

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 :
  1. main(int argc, char **argv)
  2. {
  3.   int n , i;
  4.   int **board;
  5.   n = atoi(argv[1]);
  6.   nb_tab=0;
  7.   board=(int**)malloc(n * sizeof(int*)); // création de la table
  8.   for(i=0;i<n;i++)
  9.   {
  10.   board = (int*)malloc(n * sizeof(int));
  11.   init(i,n,board);
  12.   nb_tab++;
  13.   }
  14. }


 
- Puis, une fonction 'cree' qui ajoute des lignes aux tableaux suivant l'analyse de ceux-ci.  
 

Code :
  1. cree(int nt, int **t, int n)
  2. {
  3. t[nt] = (int *)malloc(n * sizeof(int));
  4. nb_tab++;
  5. printf("board [%d] creee\n", nt);
  6. }


 
Pour le peu qu'on utilise la fonction 'cree' comme suit :  

Code :
  1. for(i=4;i<30;i++)
  2.   {
  3.   cree(i,board,n);
  4.   }


 
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
Reply

Marsh Posté le 18-03-2003 à 13:27:36   

Reply

Marsh Posté le 18-03-2003 à 13:39:25    

truc idiot, regarde ta conso de ram. Perso un de mes prog bloquait aussi comme un con, et je me suis demande pkoi jusqu'a ce que je remarque que j'allouais gallairdement 1.8Go de ram (variable pourrie). l'alloc prenait un peu de tps :D
 
 

Reply

Marsh Posté le 18-03-2003 à 13:43:52    

ton code est sans erreur
sa simplicité ne laisse aucun doute, c'est ton compilateur qui plantouille
je l'ai testé avec visual C++
et no blem
 
 :jap:

Reply

Marsh Posté le 18-03-2003 à 13:45:09    

nonokao a écrit :

ton code est sans erreur
sa simplicité ne laisse aucun doute, c'est ton compilateur qui plantouille
je l'ai testé avec visual C++
et no blem
 
 :jap:  


 
Merci nonokao  :hello:

Reply

Marsh Posté le 18-03-2003 à 13:56:52    

chrisbk a écrit :

truc idiot, regarde ta conso de ram. Perso un de mes prog bloquait aussi comme un con, et je me suis demande pkoi jusqu'a ce que je remarque que j'allouais gallairdement 1.8Go de ram (variable pourrie). l'alloc prenait un peu de tps :D


 
lol
fo voir, j'ai testé avec 5000 en paramètre
 
ThADawG, ça peut être ta fonction init(i,n,board) qui plante, et comme tu n'as pas mis le code, execute ton programme en pas à pas et regarde sur quelle ligne ça plantouille.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed