Nie mam pojecia czemu ten kod sie crashuje w trybie Debug, zaznacze ze normalnie dziala w trybie release i w Code Blocks'ie.
#include <iostream>
#include <string>
#include <fstream>
class Login
{
public:
Login(void) {}
Login(const std::string &a, const std::string &b)
{
this->name = a;
this->password = b;
}
void saveToBinaryFile()
{
std::ofstream file("file.bin", std::ios::binary);
file.write(reinterpret_cast<char *>(this), sizeof(Login));
file.clear();
file.close();
}
void getFromBianryFile()
{
std::ifstream file("file.bin", std::ios::binary);
file.read(reinterpret_cast<char *>(this), sizeof(Login)); // <-- crash
file.clear();
file.close();
}
void writeUser()
{
std::cout << name << ' ' << password << std::endl;
}
private:
std::string name;
std::string password;
};
int main()
{
Login user1("Nick", "Haslo");
user1.writeUser();
user1.saveToBinaryFile();
Login user2;
user2.getFromBianryFile();
user2.writeUser();
return 0;
}
Pod koniec niby wypisuje wszystko poprawnie, ale pojawia sie komunikat o crashu.
Naruszenie zasad dostępu podczas zapisywania w lokalizacji 0xDDDDDDDD.