Donc, je viens de commencer à utiliser Ubuntu récemment. Je construis ce programme très simple qui me permettra de stocker des données et de les relire plus tard. En utilisant C++, fstream, certains objets sont stockés dans un fichier .dat.Impossible de lire le fichier .dat ou .bin dans Ubuntu "Erreur de segmentation (core dumped)"
// function to store
void storeRecord(Record r){
fstream afile;
afile.open("file.dat" , ios::out | ios::binary | ios::app);
afile.write(reinterpret_cast <const char*> (&r), sizeof(r));
afile.close();
}
Mais lorsque je tente de (appel requête() fonction) lecture du même fichier, que je reçois "Segmentation fault (core dumped)"
void query(){
Record r;
fstream afile;
afile.open("file.dat", ios::in | ios::binary);
while(afile.read(reinterpret_cast <char*> (&r), sizeof(r))){
// do something
}
afile.close();
}
Cette habitude de travailler sur les fenêtres. Pourquoi donc?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Record{
public:
// Constructors
Record();
Record(string accountID, string name, string deptID, string password, int role);
~Record();
// Assessors and Mutators
string getAccountID();
string getName();
string getDeptID();
string getPW();
int getRole();
void setAccountID(string accountID);
void setName(string name);
void setDeptID(string deptID);
void setPW(string PW);
void setRole(int role);
// Other functions
string toString();
private:
string accountID;
string name;
string deptID;
string password;
int role; // normal user, HR personal, admin
};
Il n'y a pas de r dans la requête définie. Qu'est-ce que Record? Si ce n'est pas un POD, vous avez votre bug. –
Il y a. Dans le programme actuel. Mon erreur ici. oops – poh
Quel est le type de 'Record'?A-t-il du [vtable] (https://en.wikipedia.org/wiki/Virtual_method_table), ou un pointeur (même indrect ou interne)? ** Votre code a [comportement indéfini] (https://en.wikipedia.org/wiki/Undefined_behavior) ** donc vous avez de la chance qu'il se bloque sur Linux (et * malchanceux * qu'il "semble" fonctionner sous Windows) .... –