我写了一个非常小的代码段,并已经得到了以下错误:SIGABRT二进制读/写
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;
}
不要使用标识符'__like_this'也不'_Like_this',他们保留的实现。 – Fanael 2012-02-24 15:45:39