Сбой приложения MFC вне VS при создании диалогового окна

Мое приложение работает нормально при запуске из Visual Studio, но падает, если я использую EXE-файл для его запуска. [Отладка exe]

Проблема возникает, когда приложение достигает этой строки кода:

            nmax=2*(nrows+rows);
create_progrcntl(L"Processing please wait"); // Crashes here
pgr->m_pgr.SetRange32(1,nmax);
pgr->m_pgr.SetStep(1);

Функция create_progresscntl:

 void import::create_progrcntl(CString header)
{

pgr = new CPgr;
pgr->Create(IDD_PROGRESS,this);
pgr->SetWindowTextW(header);
pgr->ShowWindow(SW_SHOW);
}

Я использую эту функцию и в нескольких других местах, и она не вызывает никаких ошибок.
Это только для функции import::processENSAT_MasterSlave() что он падает.

Он работает нормально внутри VS, но вылетает, если я запускаю EXE снаружи.

Я прикрепил процесс к отладчику VS. Это мой стек вызовов сразу после сбоя:

   ntdll.dll!7729e3be()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!7729e023()
kernel32.dll!751914dd()
msvcr100d.dll!_free_base(void * pBlock)  Line 50 + 0x13 bytes
msvcr100d.dll!_free_dbg_nolock(void * pUserData, int nBlockUse)  Line 1431 + 0x9 bytes   C++
msvcr100d.dll!_free_dbg(void * pUserData, int nBlockUse)  Line 1265 + 0xd bytes  C++
mfc100ud.dll!operator delete(void * p)  Line 347 + 0xc bytes C++
mfc100ud.dll!operator delete[](void * p)  Line 360 + 0x9 bytes   C++
mfc100ud.dll!COccManager::PostCreateDialog(_AFX_OCC_DIALOG_INFO * pDlgInfo)  Line 239 + 0x12 bytes   C++
mfc100ud.dll!CWnd::CreateDlgIndirect(const DLGTEMPLATE * lpDialogTemplate, CWnd * pParentWnd, HINSTANCE__ * hInst)  Line 413 C++
mfc100ud.dll!CDialog::CreateIndirect(const DLGTEMPLATE * lpDialogTemplate, CWnd * pParentWnd, void * lpDialogInit, HINSTANCE__ * hInst)  Line 263    C++
mfc100ud.dll!CDialog::CreateIndirect(void * hDialogTemplate, CWnd * pParentWnd, HINSTANCE__ * hInst)  Line 240 + 0x16 bytes  C++
mfc100ud.dll!CDialog::Create(const wchar_t * lpszTemplateName, CWnd * pParentWnd)  Line 222 + 0x14 bytes C++
mfc100ud.dll!CDialog::Create(unsigned int nIDTemplate, CWnd * pParentWnd)  Line 673 + 0x1a bytes C++
Sar_CCD.exe!import::create_progrcntl(ATL::CStringT<wchar_t,StrTraitMFC_DLL<wchar_t,ATL::ChTraitsCRT<wchar_t> > > header)  Line 370 + 0x27 bytes
Sar_CCD.exe!import::processENSAT_MasterSlave()  Line 1760
Sar_CCD.exe!import::Select_process_func()  Line 2758
Sar_CCD.exe!import::OnBnClickedBtnProcess()  Line 340

Полный код:
http://sharetext.org/ZKKp


Решено: buf был инициализирован как buf=new char[6];, Позже в него были прочитаны 21 байт. Большое спасибо @atzz

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]