gpt4 book ai didi

c++ - ShellExecute 崩溃

转载 作者:行者123 更新时间:2023-11-30 04:33:12 25 4
gpt4 key购买 nike

我有一个程序在执行 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 会这样崩溃?感谢您的帮助。

最佳答案

正如 Cory Nelson 所说,错误不在 API 本身,而在 MFC。可能存在导致应用程序崩溃的 ShellExecute Hook 。

关于c++ - ShellExecute 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037933/

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