我的一个程序,使用了CFile class,但是在访问文件的时候会随机出现这样的运行失败  插图请看
http://bbs.21ic.com/upfiles/img/200612/200612208475771.gif
http://bbs.21ic.com/upfiles/img/200612/200612208503938.gif
我的程序是这样的void CFile_test::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 CFile file(fn,CFile::modeCreate|CFile::modeReadWrite);
 int i;
 for(i=0;i<100;i++)
  {
  int buf[bsize];
  memset(buf,i,bsize*sizeof(int));
  file.Write((void*)&buf,bsize*sizeof(int));
  }
 file.~CFile();
}我怎么也想象不出来,这样写程序有什么错误
这是.h文件
 const char fn[]="文件名.bin";
 const int bsize=3000;class CFile_test : public CDialog
{
 DECLARE_DYNAMIC(CFile_test)public:
 CFile_test(CWnd* pParent = NULL);   // 标准构造函数
 virtual ~CFile_test();// 对话框数据
 enum { IDD = IDD_DIALOG2 };protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持 DECLARE_MESSAGE_MAP()
public:
 //CFile file;
 CButton but1;
 afx_msg void OnBnClickedButton1();
};

解决方案 »

  1.   

    void CFile_test::OnBnClickedButton1()
    {
     // ...
      file.Write((void*)&buf,bsize*sizeof(int)); // 这句有误
     // ...
    }
    我想应为:
    file.Write((void*)buf,bsize*sizeof(int));
      

  2.   

    file.~CFile();换成file.Close();试试
      

  3.   

    int buf[bsize];
      memset(buf,i,bsize*sizeof(int));
      file.Write((void*)&buf,bsize*sizeof(int));??buf已经是一个指向整型数组第一个元素的指针。
    &buf是指向指针的指针。
    (void*)&buf,这样的转换很有问题