c++在程序结束时内存访问冲突

#include<iostream>
#include<fstream>
using namespace std;
struct stu
{
    string name;
    int num;
    int score[3];
};

int main()
{
    int n = 5;
    ofstream fout("test9_1cout.txt");
    stu Stu[5] = { {"张明明",101,{67,78,82}},
        {"李天天",102,{78,91,88}},
        {"张好好",103,{68,82,56}},
        {"王酷",104,{56,45,77}},
        {"陈跑",105,{67,38,47}}
    };
    stu STU2[5] = {};
    fout.write((char*)Stu, sizeof(Stu));
    fout.close();

    ifstream fin("test9_1cout.txt");
    fin.read((char*)(STU2), sizeof(STU2));


    for (int i = 0; i < 5; i++)
    {
        cout << STU2[i].name << "\t";
        cout << STU2[i].num << "\t";
        for (int j = 0; j < 3; j++)
        {
            cout << STU2[i].score[j] << "\t";
        }
    }
    fin.close();
    return 0;
}

运行到都没问题,再往下

使用vs2013运行你的代码没通过编译,将cout << STU2[i].name << "\t";改为cout << STU2[i].name.c_str() << "\t";之后通过编译,并未发生你说的错误

提供代码和截图错误有关联吗?

应该是改指针指向的内存已经被释放,指针已经变为野指针

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632