Écriture et lecture dans un fichier ouvert en mode binaire
Je teste un peu le C++, et j'obtiens à la compilation :
*** Error in `/home/jessie/workspace/c++-002/Debug/c++-002': double free or corruption (fasttop): 0x00000000023f9260 ***
Je cherche et je n'ai pas encore le recul pour comprendre l'erreur.
Voici les sources si quelqu'un peut m'aider à comprendre ce serait sympa.
Je suis sous GNU Debian Linux et j'utilise Eclipse et le compilateur GCC.
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 50 51 52
| #include <iostream>
#include <cmath>
#include <fstream>
#include "Adresse.h"
using namespace std;
int main()
{
char file[26] = "Essai";
ofstream monFlux(file, ios::binary);
if(monFlux)
{
}
else
{
cout << "Erreur" << endl;
}
Adresse Personne1(102, "Charles", 1990, 26);
Adresse Personne2(100, "Inconnu", 1900, 0);
monFlux.write((char *) &Personne1, sizeof Personne1);
monFlux.close();
ifstream lire(file, ios::binary);
lire.read((char *) &Personne2, sizeof Personne2);
if(lire)
{
}
else
{
cout << "Erreur" << endl;
}
Personne1.Lecture_Attribut();
Personne2.Lecture_Attribut();
lire.close();
} |
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
| #ifndef ADRESSE_H_
#define ADRESSE_H_
#include <iostream>
#include <string>
class Adresse
{
public:
// Constructeur par defaut
Adresse();
// Constructeur
Adresse( signed int vi_cle,
std::string string_nom,
signed short vs_annee,
signed short vs_age );
void Lecture_Attribut();
~Adresse();
private :
signed int mvi_cle;
std::string mstring_nom;
signed short mvs_annee;
signed short mvs_age;
};
#endif /* ADRESSE_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 31 32
| #include "Adresse.h"
// Constructeur par defaut
Adresse::Adresse()
{
mvi_cle = 0;
mstring_nom = "Inconnu",
mvs_annee = 0,
mvs_age = 0;
}
// Constructeur
Adresse::Adresse( signed int vi_cle, std::string string_nom, signed short vs_annee, signed short vs_age ) :
mvi_cle(vi_cle),
mstring_nom(string_nom),
mvs_annee(vs_annee),
mvs_age(vs_age)
{
}
// Destructeur par Defaut
Adresse::~Adresse()
{
// TODO Auto-generated destructor stub
}
// Methode Lecture Attribut
void Adresse::Lecture_Attribut()
{
std::cout << mvi_cle << "\n";
} |