0
내 MFC SDI 응용 프로그램에서 내 문서를 저장하려면 CDocument :: DoSave 재정의하려고합니다. 3 단계 구성 요소 (TxTextControl)를 사용하여 텍스트 컨트롤을 작성하고 있습니다. 문서를 저장할 때 파일이 만들어 지지만 약 1 분 후에 내 응용 프로그램이 올 액세스 오류 0xFEEEFEEE, ole32.dll에서 충돌합니다.mfc sdi 응용 프로그램 cdocument dosave 오류 0xFEEEFEEE
입니다이 문제가 온다 해제 힙 메모리를 표시하기 위해 마이크로 소프트의 HeapFree (에서 사용
FEEEFEEE) :
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; }
호출 스택은 ole32.dll! 7734c99e()에서 끝나고 디스 어셈블리에서 해체는 다음과 같습니다. 7734C99E mov ecx, dword ptr [eax] –
EAX 값은 FEEEFEEE –
입니다. 내 코드에서 문제를 어떻게 찾을 수 있습니까? ? –