c++从文件流读入数据后会多一个全0数据的有关问题

c++从文件流读入数据后会多一个全0数据的问题
将一个vector<Record*>以binary形式存到文件后,再用输入流从文件输入到内存,再一条条加进vector时,vector最末位会多加进一个全0的Record数据,不知道是为什么。
代码片段如下:
存储方法:
void InfoVector::saveRecords(ostream &ofile)
{
    //以binary方式进行存储
    iter i_p;
    for (i_p = firstRecord(); i_p != lastRecord(); i_p++) {
        ofile.write((char *)*i_p, sizeof(Record));
    }
}
读取方法:
int InfoVector::loadRecords(istream &is)
{
    int result = 0;
    
    while (!is.eof()) {
        Record *rec = new Record;
        is.read((char *)rec, sizeof(Record));
        recVec.push_back(rec);
        result = 1;
    }
    recVec.pop_back(); //不知为何vector里会多一个全0的记录,只能用pop暂时解决
    
    return result;
}
本人暂时解决办法是读取后用个pop将全0数据出栈,但不明原因心里总有疙瘩。

------解决思路----------------------
最后一次read数据之后, 下一个字符就是EOF, 但是还没读到

这时  while (!is.eof())为真

再次read, 什么都没读到.

read好像有返回值把, 判断一下
---------------------------------------------------
以上为猜测.