У меня есть программа, которая падает по инструкции ShellExecute()
.Если я использую метод system()
, все работает нормально, но я прочитал, что system()
было злом ...
Я использую Visual Studio 2010 SP1.
Итак, есть моя функция, которая вызывает ShellExecute:
ATC_GENERIC_API void __cdecl atcGenericLaunchGAG()
{
HINSTANCE ret = ShellExecute( NULL, NULL, "MyExe.exe", NULL, "C:\\Opt\\", SW_SHOW );
if( int(ret) > 32 )
{
//OK
return;
}
//NOK
}
У меня есть ошибка:
Unhandled exception at 0x640361c3 in Aneto Sol.exe: 0xC0000005: Access violation reading location 0x0ba29bb0.
И отладчик ломается здесь:
void __cdecl operator delete(void* p)
{
#if !defined(_AFX_NO_DEBUG_CRT) && defined(_DEBUG)
_free_dbg(p, _NORMAL_BLOCK);
#else
free(p);
#endif
}
И это мой стек вызовов:
mfc100d.dll!operator delete(void * p) Line 347 + 0xc bytes C++
mfc100d.dll!operator delete[](void * p) Line 360 + 0x9 bytes C++
mfc100d.dll!CPlex::FreeDataChain() Line 43 + 0xf bytes C++
mfc100d.dll!CMapPtrToPtr::RemoveAll() Line 87 C++
mfc100d.dll!CMapPtrToPtr::FreeAssoc(CMapPtrToPtr::CAssoc * pAssoc) Line 147 C++
mfc100d.dll!CMapPtrToPtr::RemoveKey(void * key) Line 252 C++
mfc100d.dll!CHandleMap::RemoveHandle(void * h) Line 230 C++
Кто-то уже имел такую ошибку с ShellExecute или может объяснить мне, почему ShellExecute аварийно завершает работу так?Чем вам за помощь.