IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

[Debutant]*** glibc detected *** free()


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut [Debutant]*** glibc detected *** free()
    Bonjour a tous,

    Bon tout d'abord : je vous presente ma classe , le vecteur.h :
    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
    30
     
    #ifndef VECTEUR_H
    #define VECTEUR_H
     
    // Type vecteur
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <iostream.h>
     
    #define FAUX	0
    #define VRAI	~FAUX
     
    // Type vecteur de int
     
    class vecteur
    {
    private:
    	int taille ;
    	float *tab ;
     
    public:
    	vecteur() ; //Constructeur par defaut 
    	void affiche(); // Affiche la taille puis les composantes du vecteur
    	vecteur(int); // Constructeur, affecte la taille au vecteur
    	vecteur(vecteur&);// Constructeur par copie
    	~vecteur(); // Destructeur
    };
    #endif // VECTEUR_H
    voici mon vecteur.cc :
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    // Type vecteur
    #include "Vecteur.h"
    #include <iostream.h>
     
    // Constructeurs
    vecteur::vecteur()
    {
    	taille = 0 ;
    	tab = NULL ;
    }
     
    //Constructeur par copie
    vecteur:: vecteur(vecteur& v)
    {
      int i;
      taille=v.taille;
      for (i=0;i<taille;++i)
        {
          tab[i]=v.tab[i];
          printf("%f",v.tab[i]);
        }
    }
     
    //Constructeur avec taille
    vecteur:: vecteur(int n)
    {
      int i;
      taille=n;
      tab=new float[n];
      for (i=0;i<taille;++i)
        tab[i]=0;
    }
     
    // Destructeur
    vecteur::~vecteur()
    {
      delete [] tab;
    }
     
    // affiche
    void vecteur::affiche()
    {
      int i;
      cout << taille << endl ;
     
      for (i=0;i<taille;++i)
          cout << tab[i] << endl;
    }
    Et enfin mon main.cc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int main(int argc, char **argv)
    {
    	vecteur v ;
    	v.affiche() ;
    	cout << "PROGRAMME DE TEST" << endl;
     
    	// Constructeurs
    	vecteur v1(3);
    	vecteur v2(v1);
    }
    Voila tout se compile correctement mais au moment de l'execution mon cher g++ me sort un beau "*** glibc detected *** free(): invalid pointer: 0xb7f21838 ***
    0.0000000.0000000.000000Abandon"

    Voila j'ai pas mal cherche le vecteur v1 se cree bienn mais impossible de faire la copie ...

    Si qqun voit pourquoi...



  2. #2
    Membre expérimenté
    Avatar de superspag
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 153
    Par défaut
    dans ton constructeur par copie tu n'alloue pas de memoire...

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Dans le constructeur par défaut aussi.
    Dans ton destructeur, tu fais un delete quoiqu'il arrive, alors que parfois il n'y a pas de pointeur associé ou la mémoire a pu être effacée par un autre destructeur.

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Par défaut

    Merci...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/05/2019, 17h27
  2. Réponses: 6
    Dernier message: 20/03/2009, 10h05
  3. [ProFTPd][glibc detected double free or corruption]
    Par Théolude dans le forum Administration système
    Réponses: 1
    Dernier message: 28/08/2008, 09h19
  4. erreur glibc detected double free or corruption.
    Par Screwt-K dans le forum C++
    Réponses: 1
    Dernier message: 02/07/2007, 16h46
  5. * glibc detected * free(): invalid pointer
    Par ViRouF dans le forum C
    Réponses: 4
    Dernier message: 28/03/2007, 17h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo