未处理的异常:访问冲突读取位置0x00474EB4

时间:2015-05-30 18:50:17

标签: c++ exception memory

我是C ++的初学者,我被问到比我学到的更难的事情。

我正在尝试从二进制文件(InfoFile.dat)中读取信息并将其显示在控制台上。

程序正在读取信息并在控制台上显示它没有问题,我甚至可以继续正常使用该程序。

然而, 之后我退出程序时使用:interceptOnTouchEvent会出现一个窗口,此错误显示:

return EXIT_SUCCESS

错误仅在我尝试从文件中读取而不是写入时显示。 仅当我使用Unhandled exception at 0x542FCCC8 (msvcp110d.dll) in pcp.exe: 0xC0000005: Access violation reading location 0x00474EB4. return EXIT_SUCCESS退出程序时(不是当我从x按钮关闭控制台窗口时)

请知道我已经google了,在stackoverflow中查看了很多同样错误的问题,但没有一个帮助

代码:

显示功能:

exit(1)是类驱动程序的对象

driverObj

显示功能

void Staff::displayDriver(){

int i=1;
ifstream fp1;
fp1.open("InfoFile.dat",ios::binary);
if(fp1.is_open()){
    while(!fp1.eof())
    {
        fp1.read((char*)&driverObj,(sizeof(driverObj)));
        cout << i << ". ";
        driverObj.showDriver();
        i++;
    }
}
else{
    cout << "File was not found!" << endl;
}

fp1.close();
}

驱动程序类

void Driver::showDriver(){
    cout << "ID: " << id << " - Name: " << name << " - Zipcode: " << zipcode << " - Phone: " << phone << endl;
}

此外,视觉工作室在“xutility”中显示了这一点:

class Driver : public User {

protected:
    string name;
    long phone;
    int id, zipcode;
    Vehicle vehicle;

public:
    Driver();
    Driver(int,string,int ,long , Vehicle);
    void showDriver();
    int getID();
};

0 个答案:

没有答案