HelloWorld_java_ 2022-04-02 01:30 采纳率: 88.2%
浏览 29
已结题

c++读写文件时指针出错堆区的释放出现问题

其中只是一段代码,运行时只打印了date[0].id的内容,而后面的(比如date[1].id)没有输出然后程序就崩溃了,请问怎么解决
这个getnume();是用来获取txt文件的行数的


user* date = new user(1, "zhangsan", "password", 100, 1);
    
    void getdate() {//获取用户信息保存到数组
        fstream ofs;
        getnume();
        ofs.open(file, ios::in);
        cout << sizeof(date) << endl;
        system("pause");
        for (int i = 0; i < nume; i++) {
            ofs >> date[i].id
                >> date[i].Name
                >> date[i].Password
                >> date[i].money
                >> date[i].State;
            cout << date[i].id << endl;
            system("pause");
        }
        system("pause");
        ofs.close();
    }
  • 写回答

2条回答 默认 最新

  • Huoon 2022-04-02 08:25
    关注

    date 只new了一个对象,当作数组的话只有一个元素,而你的文件行数可能大于1,所以第一行输入是正确的,第二行再试图就越界了,正确的做法是new一个数组。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 修改了问题 4月2日
  • 创建了问题 4月2日