0xC0000005: 写入位置 0xabababab 时发生访问冲突

场景:.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的错误: 0xC0000005: 写入位置 0xabababab 时发生访问冲突

.exe 中的 0x5da7edfc (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
红色部分在调试过程中到最后一个人信息显示之后就出现错误,求教是什么原因?
TXT信息
00000001 苏三 123457 计科1班 
00000002 李四 123453 计科1班 
00000003 王五 123452 计科2班
00000004 张四 111123 网工4班
00000005 张三 234211 计软3班


#include<iostream>
#include<string>
#include<fstream>
using namespace std;
struct Information
{
string id; //学生学号
string stuName;//学生名字
string key;//学生密码
string ban;//学生班级
};
class Student
{
public:
Information students;
Student(){}
~Student(){}
int CountLines(char*filename);
void Show(int); //从txt读取学生信息
};

int Student::CountLines(char*filename)
{
ifstream ReadFile;
int n=0;
string temp;
ReadFile.open(filename,ios::in);
if(ReadFile.fail())
{
return 0;
}
else
{
while(getline(ReadFile,temp))
{
n++;
}
return n;
}
ReadFile.close();
}
void main()
{
Student mm;
  string num;
string name;
string code;
string Ban;
int LINES;
ifstream f("Student.txt",ios::in);
if(!f)
{
cerr<<"没有学生记录可供查询!"<<endl;
abort();
}
else
{
LINES=mm.CountLines("Student.txt");
Information *students=new Information[LINES-1];
int i=0;
while(!f.eof())
{
f>>num>>name>>code>>Ban;
  students[i].id=num;
students[i].stuName=name;
  students[i].key=code;
students[i].ban=Ban;
i++;
}
f.close();
}
}


------解决方案--------------------
楼主能确保文件中一行是一个信息,而且最后还带一个换行吗
------解决方案--------------------
C/C++ code
#include <iostream>
#include <string>
#include <fstream>
using namespace std;

struct Information
{
    string id;    //学生学号
    string stuName;//学生名字
    string key;//学生密码
    string ban;//学生班级
};
class Student
{
public:
    Information students;
    Student(){}
    ~Student(){}
    int CountLines(char*filename);
    void Show(int); //从txt读取学生信息
};

int Student::CountLines(char*filename)
{
    ifstream ReadFile;
    int n=0;
    string temp;
    ReadFile.open(filename,ios::in);
    if(ReadFile.fail())
    {
        return 0;
    }
    else
    {
        while(getline(ReadFile,temp))
        {
            n++;
        }
        return n;
    }
    ReadFile.close();
}

void main()
{
    Student mm;
    string num;    
    string name;
    string code;
    string Ban;
    int LINES;
    ifstream f("Student.txt",ios::in);
    if(!f)
    {
        cerr<<"没有学生记录可供查询!"<<endl;
        abort();
    }
    else
    {
        LINES=mm.CountLines("Student.txt");
        Information *students=new Information[LINES];//数组不够用,溢出
        int i=0;
        while(!f.eof())
        {
            f>>num>>name>>code>>Ban;
             students[i].id=num;
             students[i].stuName=name;
             students[i].key=code;
             students[i].ban=Ban;
            cout<<students[i].id<<" "<<students[i].stuName<<" "<<students[i].key<<" "<<students[i].ban<<endl;
            i++;
        }
        f.close();
    }
}