gpt4 book ai didi

c++ - mfc sdi 应用程序 cdocument dosave 错误 0xFEEEFEEE

转载 作者:行者123 更新时间:2023-11-28 07:56:00 27 4
gpt4 key购买 nike

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

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;
}

最佳答案

Magic debug values :

FEEEFEEE Used by Microsoft's HeapFree() to mark freed heap memory

也就是说,问题出在这样一个事实,即代码处理已释放的内存,就好像它还活着一样。将问题隔离到特定代码片段,调试并使用异常时的调用堆栈信息。

关于c++ - mfc sdi 应用程序 cdocument dosave 错误 0xFEEEFEEE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12722581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com