[Debutant]*** glibc detected *** free()
Bonjour a tous,
Bon tout d'abord : je vous presente ma classe , le vecteur.h :
Code:
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:
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:
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...
:?