Malloc help

damage123 Messages postés 70 Statut Membre -  
damage123 Messages postés 70 Statut Membre -
Bonjour,

Je tourne sous ubuntu 10.04, j'ai un programme qui fonctionne bien, en tout cas j'ai pas d'erreur a la compilation, meme pas de warning (en utilisant g++ -Wall) et puis a l'execution j'ai une erreur de malloc, je ne vois pas d'ou ca peut venir, parce que a aucun moment j'utilise la fonction malloc, j'utilise par contre new donc voila l'erreur que j'obtient a l'execution du programme :

| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
| | | | | | | |
---------------

joueur 1 veuillez entrer votre coup :
1
ligne : 1
Puissance4: malloc.c:3096: sYSMALLOc: Assertion '(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed.
Abandon

donc le programme s'execute correctement jusqu'a "ligne : 1" et après y'a l'erreur ...
sous ubuntu il plante après la premiere validation du premier chiffre par contre quand j'ai tester le meme programme sous windows, il marche mais plante au bout du 3 eme tour de boucle ... je ne comprend pas x)

merci d'avance de votre aide

6 réponses

  1. loupius Messages postés 789 Statut Membre 148
     
    Salut,
    Si tu ne donnes pas le code, je crains que personne ne pourra donner une réponse adéquate.
    0
  2. Gaunts Messages postés 1390 Statut Membre 116
     
    Salut,

    Effectivement il faudrait ton code..
    Essaie de compiler avec -ansi -pendantic
    0
  3. flo13142 Messages postés 74 Statut Membre 18
     
    Salut,

    Ce que tu décris ressemble à un écrasement en mémoire. En gros tu écris quelque part à un endroit ou tu n'as pas le droit. Exemple tu as un tableau de 10 cases tu écris à la 11 éme.
    Du coup en fonction de ton environnement d'exécution tu ne plantes pas au même endroit.
    Mais en effet le plus simple est de poster ton code.
    0
  4. damage123 Messages postés 70 Statut Membre 6
     
    http://darties.hd.free.fr/MainSite/uploads/Teaching/ITC34_puissance4.zip

    voila le code, y'a une erreur dans le fichier Plateau.h ligne 12, y'a un point virgule en trop a la fin de ligne.

    désolé j'ai oublier de le poster ^^'

    Je compile le tout avec un make file dont le contenu est :

    Puissance4 : main.o Plateau.o Jeton.o Joueur.o Partie.o  
     g++ -Wall main.o Plateau.o Jeton.o Joueur.o Partie.o -o Puissance4  
    
    Joueur.o : Joueur.cpp Joueur.h  
     g++ -Wall -c Joueur.cpp  
    
    Jeton.o : Jeton.cpp Jeton.h  
     g++ -Wall -c Jeton.cpp  
    
    Plateau.o : Plateau.cpp Plateau.h Jeton.h  
     g++ -Wall -c Plateau.cpp  
    
    Partie.o : Partie.cpp Plateau.h Jeton.h Joueur.h  
     g++ -Wall -c Partie.cpp  
    
    main.o : main.cpp Partie.h Plateau.h Jeton.h Joueur.h
     g++ -Wall -c main.cpp  
    
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. loupius Messages postés 789 Statut Membre 148
     
    Je n'ai pas de problème, ni à la compilation ni à l'exécution ;)
    Quelques points à revoir:
    int Plateau::ajouterJeton(char c, int col)
    {
      col %= 7;  // permet de normaliser col entre 0 et 6

    Il serait judicieux de ne pas utiliser directement les nombres pour comparer avec le nombre de lignes ou de colonne; il vaut mieux définir:
    #define LIG 6
    #define COL 7
    Par exemple:
    bool Plateau::grillePleine()
    {
      int i = 0;
      while ((i < COL) && (grille[LIG-1][i] != NULL))
        i++;
      return (i == COL);
    }
    Cela est plus lisible et surtout cela permet de pouvoir aisément définir des jeux ayant d'autres dimensions.

      if (grille[i][j] != NULL && grille[i][j+1] != NULL && gril ...
    peut se simplifier en:
      if (grille[i][j] && grille[i][j+1] && gril ..
    Bonne continuation.
    0
  7. damage123 Messages postés 70 Statut Membre 6
     
    enfaite la compilation passe sans soucis, mais c'est l'execution qui foire quelques part
    0