运行时检查失败#3 - 变量' pLib'正在使用而未初始化

时间:2015-11-02 19:41:38

标签: visual-c++ mfc

我很困惑为什么我会收到这个错误。代码如下。我在这一行收到了错误" 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;
}

1 个答案:

答案 0 :(得分:0)

安德鲁的评论(虽然100%正确)不解释这个“运行时检查失败#3”。

启用此检查后,编译器会在堆栈上保留一些内存以跟踪局部变量的初始化。它实际上将0写入与序言中的某个变量对应的字节中,并在为此变量赋值时将其写入1。

然后运行时检查将该值与0进行比较并发出警报({{1}}),如果是。

因此,要使检查失败,您需要将零写入函数的堆栈。这样做的代码显然没有发布在你的问题中。