我写了一个类用于对数据的存取操作,但执行内存泄漏。高手请指点我是这样用这个类的如下:
CWrfile m_Wrfile;
m_Wrfile.m_FileName="data.dat";
m_Wrfile.openfile("rb");
 m_Wrfile.readfile();
m_Wrfile.closefile();
但如果我这样又不会出现错误:先写然后再读
CWrfile m_Wrfile;
m_Wrfile.m_FileName="data.dat";
m_Wrfile.openfile("wb");
m_Wrfile.writefile();
m_Wrfile.closefile();
m_Wrfile.openfile("rb");
// m_Wrfile.readfile();
CString m_Str;
m_Str.Format("10%s10%s",m_Wrfile.dang_anObject->address,m_Wrfile.dang_anObject->administrator);
MessageBox(m_Str);
// m_Wrfile.closefile();文件如下:
//头文件开始#include <stdio.h> struct dang_an
{
CString pen_hao;
CString sin_zhi;
CString min_chun;
CString address;
CString lian_xiren;
CString you_ma;
CString dian_hua;
CString chuan_zhun;
CString diao_zhiemail;
CString pei_tongleixin;
CString pei_tongcount;
CString se_piaoleixin;
CString se_piaocount;
CString jie_suanstates;
CString jie_suanfangshi;
CString ya_jincount;
CString ya_jinjine;
CString wei_sutime;
CString qin_xitime;
CString administrator;
};
class CWrfile
{public:
FILE *fp;//文件的指针
    CString m_FileName;//要打开的文件名
dang_an *dang_anObject;//结构对象
public:
  CWrfile();//构造函数
  CWrfile(CString m_name);
  ~CWrfile();
  void openfile(char *openmode);//打开文件
  void readfile();//读文件
  void writefile();//写文件
  void closefile();//关闭文件
};//源文件如下
#include "stdafx.h"
#include "WRFile.h"CWrfile::CWrfile()
{
fp=NULL;
m_FileName="default.dat";
dang_anObject=new dang_an;
if(dang_anObject!=NULL)
{
        dang_anObject->pen_hao="不详";
dang_anObject->sin_zhi="不详";
dang_anObject->min_chun="不详";
dang_anObject->address="不详";
dang_anObject->lian_xiren="不详";
dang_anObject->you_ma="不详";
dang_anObject->dian_hua="不详";
dang_anObject->chuan_zhun="不详";
dang_anObject->diao_zhiemail="不详";
dang_anObject->pei_tongleixin="不详";
dang_anObject->pei_tongcount="不详";
dang_anObject->se_piaoleixin="不详";
dang_anObject->se_piaocount="不详";
dang_anObject->jie_suanstates="不详";
dang_anObject->jie_suanfangshi="不详";
dang_anObject->ya_jincount="不详";
dang_anObject->ya_jinjine="不详";
dang_anObject->wei_sutime="不详";
dang_anObject->qin_xitime="不详";
dang_anObject->administrator="不详";
}
}
CWrfile::~CWrfile()
{
    delete dang_anObject;}CWrfile::CWrfile(CString m_name)
{
   fp=NULL;
    m_FileName=m_name;
dang_anObject=new dang_an;
if(dang_anObject!=NULL)
{
        dang_anObject->pen_hao="不详";
dang_anObject->sin_zhi="不详";
dang_anObject->min_chun="不详";
dang_anObject->address="不详";
dang_anObject->lian_xiren="不详";
dang_anObject->you_ma="不详";
dang_anObject->dian_hua="不详";
dang_anObject->chuan_zhun="不详";
dang_anObject->diao_zhiemail="不详";
dang_anObject->pei_tongleixin="不详";
dang_anObject->pei_tongcount="不详";
dang_anObject->se_piaoleixin="不详";
dang_anObject->se_piaocount="不详";
dang_anObject->jie_suanstates="不详";
dang_anObject->jie_suanfangshi="不详";
dang_anObject->ya_jincount="不详";
dang_anObject->ya_jinjine="不详";
dang_anObject->wei_sutime="不详";
dang_anObject->qin_xitime="不详";
dang_anObject->administrator="不详";
}
      
}void CWrfile::openfile(char *openmode)
{
char *filename;
filename=(LPSTR)(LPCTSTR)m_FileName;
if((fp=fopen(filename,openmode))==NULL)
{
AfxMessageBox("系统文件丢失,请重新安装");
exit(0);
}
}void CWrfile::readfile()
{
if(fp!=NULL)
{
fread(dang_anObject,sizeof(dang_an),1,fp);
}
}
void CWrfile::writefile()
{
if(fp!=NULL)
{
fwrite(dang_anObject,sizeof(dang_an),1,fp);
}
}void CWrfile::closefile()
{
fclose(fp);
fp=NULL;
}