我在重现和查找错误原因时遇到了很大的问题。发生似乎完全是随机的,所以我怀疑某处有一个未初始化的变量。但后来我发现了这段代码:
CMyClass obj; // A
obj.DoStuff();
if ( somebool )
{
CMyClass obj; // B
obj.DoStuff();
}
obj.DoOtherStuff();
似乎 DoOtherStuff() 要么在“B”上完成,要么 B.DoStuff() 有时实际上在 A 上工作 - 即我 DoStuff() 实际上是在第一个 obj 上调用的。
这会发生吗?我认为我没有收到编译器警告(我现在已经修复了代码,希望它可能会有所帮助)。这段实际代码似乎很可能是我要查找的错误所在,但当然可能还有其他我尚未发现的原因。