Указатель синглтон-класса не работает - PullRequest
0 голосов
/ 12 января 2012

У меня есть класс ABC, который является singleton. (Это C ++) Когда я делаю

ABC *b = ABC::getInstance();
ABC* a;
a=b;

тогда, когда я проверяю в отладчике, значение b не присваивается a.

В отладчике значение a отображается как 0x00000000, а все значения мусора для членов ABC (VS 2008 Debugger)

Я сделал a * b в окне просмотра отладчика и вижу действительные значения, когда я делаю a * a, я вижу все нулевые и мусорные значения (это после того, как вышеупомянутый процесс закончен)

Ответы [ 2 ]

4 голосов
/ 12 января 2012

a и b являются указателями.

Адрес, на который они указывают, будет одинаковым, хотя их конкретный адрес будет другим.

Еще одна причина может заключаться в том, что вывыполняется отладка в режиме выпуска, и вы не используете переменную a впоследствии.В этом случае компилятор может решить просто опустить объявление и присвоение a.

1 голос
/ 12 января 2012

Вы уверены, что оператор выполненный отладчиком a=b;.

выделенная в данный момент строка в отладчике еще не выполнена.поэтому переместите элемент управления на следующую строку и снова проверьте значения.

Возможно, это звучит глупо, но это единственная причина, по которой я могу думать прямо сейчас.

Другая причина взята из ЛучианаОтвет Григоре:

Еще одна причина может заключаться в том, что вы выполняете отладку в режиме выпуска и впоследствии не используете переменную a.В этом случае компилятор может решить просто опустить объявление и присвоение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...