Я написал очень маленький фрагмент кода и уже получил следующую ошибку:
malloc: *** error for object 0x100100080: pointer being freed was not allocated
Проблема в том, что я понятия не имею, о каком указателе говорит компилятор. Я передаю переменную по адресу в функции чтения / записи, но я никогда не освобождаю ее, насколько я знаю. Где ошибка в моем коде? Я запустил его с Утечками и Зомби, но ничего не получил.
Вот моя программа:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Bank
{
private:
string __name;
public:
Bank()
{
__name = "";
}
Bank(string name)
{
__name = name;
}
string getName() const { return __name; }
};
int main (int argc, char * const argv[])
{
Bank bank("Bank of America");
Bank bank2;
cout << "Bank1: " << bank.getName() << endl;
string filename = bank.getName() + ".bank";
ofstream fout(filename.c_str(), ios::binary);
if (fout.good())
fout.write((char *)&bank, sizeof(bank));
fout.close();
ifstream fin(filename.c_str(), ios::binary);
if (fin.good())
fin.read((char *)&bank2, sizeof(bank2));
fin.close();
cout << "Bank2: " << bank2.getName() << endl;
return 0;
}