weixin_45764934
2019-11-15 20:53 阅读 716

C++ 二进制文件读取访问权限冲突

在读取二进制文件的时候,第一次运行,创建文件,没有错误,第二次在有文件的基础上再次运行,则在程序结束的时候出现一个xmemory文件报错

该几行代码在代码末也重复出现过,但经过排除法测试,该几行代码在代码末出现并不会引发异常。代码如下:
//用读档方式打开文件,如果存在就读,不存在就建立。
ifstream infile;
ofstream ofile;//用来初期建立存档,和后期保存存档
infile.open("./gamedata.dat", ios::in);
if (!infile)//没有建立存档
{

        ofile.open("./gamedata.dat", ios::out);
        //写入玩家存档信息
        ofile.write((char*)&player, sizeof(player));
        ofile.close();//存好档就可以关闭文件了
        ofile.open("./equdata.dat",ios::out );
        //写入玩家装备存档信息
        ofile.write((char*)& equ, sizeof(equ));
        ofile.close();
    }

    infile.read((char*)&player, sizeof(player));
    //读完玩家档就关闭
    infile.close();
    infile.open("./equdata.dat", ios::in);
    infile.read((char*)&equ, sizeof(equ));
    //读完装备档就关闭
    infile.close(); 

    以上是出现问题的代码区域,其中,问题代码为:

    infile.open("./equdata.dat", ios::in);
    infile.read((char*)&equ, sizeof(equ));
    //读完装备档就关闭
    infile.close(); 

    以上代码在程序末也出现但未报错:
    以下为程序末尾出现的类似代码

    //关闭游戏前自动存档
    ofile.open("./gamedata.dat", ios::out);
    ofile.write((char*)& player, sizeof(player));
    ofile.close();
    ofile.open("./equdata.dat", ios::out);
    ofile.write((char*)& equ, sizeof(equ));
    ofile.close();
    system("cls");
    cout << "退出游戏";
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

相关推荐