我很困惑为什么我会收到这个错误。代码如下。我在这一行收到了错误" if(pLib-> m_fAbortThread)"
UINT CLibary:: WorkerThread(LPVOID pArgs)
{
CLibrary *pLib = CLibrary::GetInstance();
if ( !pLib )
{
return ED_NOLIBOBJECT;
}
while (1)
{
if (pLib->m_fAbortThread)
{
//Do Something here
}
}
return 0;
}
答案 0 :(得分:0)
安德鲁的评论(虽然100%正确)不解释这个“运行时检查失败#3”。
启用此检查后,编译器会在堆栈上保留一些内存以跟踪局部变量的初始化。它实际上将0写入与序言中的某个变量对应的字节中,并在为此变量赋值时将其写入1。
然后运行时检查将该值与0进行比较并发出警报({{1}}),如果是。
因此,要使检查失败,您需要将零写入函数的堆栈。这样做的代码显然没有发布在你的问题中。