我有一个ABC类,它是单例。(这是C ++) 当我做的时候
ABC *b = ABC::getInstance();
ABC* a;
a=b;
然后当我检入调试器时,b的值未分配给。
在调试器中,a的值显示为0x00000000,ABC的成员的所有垃圾值(VS 2008 Debugger)
我在调试器监视窗口中做了一个* b,我看到了有效值,当我执行* a时,我看到所有的null和垃圾值(这是在上述过程结束后)
答案 0 :(得分:4)
a
和b
是指针。
他们指出的地址将是相同的,尽管他们的具体地址会有所不同。
另一个原因可能是您在发布模式下进行调试,之后您没有使用变量a
。在这种情况下,编译器可以决定简单地省略a
。
答案 1 :(得分:1)
您确定调试器已执行语句a=b;
。
调试器中当前突出显示的行尚未执行。所以将控件移到下一行并再次检查值。
这可能听起来很愚蠢,但这是我现在能想到的唯一原因。
另一个原因,取自Luchian Grigore的回答:
另一个原因可能是您在发布模式下进行调试,之后您没有使用变量a。在这种情况下,编译器可以决定简单地省略声明和赋值。