以下是我出错的代码:
void CMyView::OnDblickSel() 
{
// TODO: Add your command handler code here
CFileDialog m_ImportDlg(TRUE,"ped","*.ped",
OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | 
OFN_PATHMUSTEXIST | OFN_READONLY |OFN_SHAREAWARE,
"PED file List(*.ped)|*.ped|All Files (*.*)|*.*||");
         m_ImportDlg.m_ofn.lpstrTitle="Import Picture Data";
      
if(m_ImportDlg.DoModal()==IDOK)
{
CString SelFile =m_ImportDlg.GetPathName();//自定义CString对象
CMyImportDlg m_ImportPICDlg(SelFile,this);//
if(m_ImportPICDlg.DoModal()==IDOK)
      {
 
 CMyAntherDlg SpDlg(SelFile);
 if(SpDlg.DoModal()==IDOK)
{
                        if(SpDlg.pDioLib!=NULL &&SpDlg.pHeadPattern!=NULL 
    && SpDlg.pHeadUNITBLK!=NULL)
   {
             .........................
                              }
}
               }
}
}// this line error occur
错误表现是当运行至此函数最后一行时,出现内存访问非法.跟踪代码发现是在调用CString析构函数时出错.
但我奇怪运行至这,怎么会还有CString对象需要销毁呢?难道是我自定义的SelFile吗?

解决方案 »

  1.   

    CMyImportDlg m_ImportPICDlg(SelFile,this);//
    ?????
      

  2.   

    是CString的内存被破坏,检查程序看看哪里数组越界或者是对内存非法操作了
      

  3.   

    CMyImportDlg m_ImportPICDlg(SelFile,this);
    CMyAntherDlg SpDlg(SelFile);
    //我重载的dlg类构造函数,将CString对象值传给myimportdlg类和myantherdlg类.
    由于同一个CString对象两次传递给了不同类对象.会不会这引起错误呢?
    但类构造函数我是这样处理的:
    CSpDlg::CSpDlg(CString FileName,CWnd* pParent /*=NULL*/)
    : CDialog(CSpDlg::IDD, pParent)
    {
      FilePath.Format("%s",FileName);//FilePath为此类成员
    }
    我想这样不会引起错误吧。
      

  4.   

    to roger_ding(海天一色) :
     你认为是哪个CString对象被破坏呢?
      

  5.   

    把对CString的操作尽量都找出来检查