2012-10-04 42 views
0

。我正在使用第三部分组件(TxTextControl)来构建文本控件。当我保存文档时,文件被创建,但大约一分钟后,我的应用程序崩溃上升读取访问错误0xFEEEFEEE,在ole32.dll。 这是我的代码,txtCtrl是我的组件:在我的MFC SDI应用程序中,我试图重写CDocument :: DoSave来保存我的文档,但我的MFC SDI应用程序中出现了错误0xFEEEFEEE

BOOL CEditorTxDoc::DoSave(LPCTSTR lpszPathName, BOOL bReplace) 
{ 
CString path, nome; 
VARIANT vt1, vt2, vt3; 
POSITION pos = GetFirstViewPosition(); 
CEditorTxView *pView = (CEditorTxView*)this->GetNextView(pos); 

VariantInit(&vt1); 
vt1.vt = VT_INT; 
vt1.intVal = -1; 
VariantInit(&vt2); 
vt2.vt = VT_INT; 
vt2.intVal = 3; 
VariantInit(&vt3); 
vt3.vt = VT_BOOL; 
vt3.boolVal = FALSE; 

if (lpszPathName == NULL) { 
    CFileDialog fSaveDlg(FALSE); 

    fSaveDlg.m_pOFN->lpstrFilter = _T("File Tx (*.tx)"); 
    fSaveDlg.m_pOFN->lpstrDefExt = _T("tx"); 
    fSaveDlg.m_pOFN->lpstrTitle = _T("Salva documento"); 
    fSaveDlg.m_pOFN->lpstrInitialDir = _T("c:"); 

    if(fSaveDlg.DoModal()==IDOK) 
    { 
     path = fSaveDlg.GetPathName(); 
     nome = fSaveDlg.GetFileName(); 

     pView->txtCtrl.Save(path, vt1, vt2, vt3); 
     SetTitle(nome); 
     SetModifiedFlag(FALSE); 
     SetPathName(path); 
    } 
} else { 
     pView->txtCtrl.Save(GetPathName(), vt1, vt2, vt3); 
     SetModifiedFlag(FALSE); 
} 

return TRUE; 
} 

回答

1

Magic debug values

FEEEFEEE微软的HeapFree(二手)

也就是说,问题就来了,以纪念释放堆内存因为代码处理释放的内存就好像它还活着。为了将问题隔离到特定代码片段,除异常时调试和使用调用堆栈信息。

+0

调用堆栈终止在行ole32.dll!7734c99e(),并在反汇编istruction是:7734C99E mov ecx,dword ptr [eax] –

+0

EAX值是FEEEFEEE –

+0

我怎样才能找到我的代码中的问题? –

相关问题