Что представляет собой 0x0022f844 в столбце значений watch при отладке? - PullRequest
0 голосов
/ 25 февраля 2012

Я использую VC2010 и вижу, что одни и те же данные представляются по-разному при отладке и записи. например: 37487840ca673239dc72f9eeb746947a представлен как

0x0022f844 "37487840ca673239dc72f9eeb746947a"   unsigned char [33]

и

0x0022f670 "48598840ca673239dc72f9eeb746947a"   unsigned char [33]

Я хочу первое представление, но второе записывается в файлы вместо первого.

EDIT:

первое и второе значения должны быть одинаковыми, поскольку второе является просто копией первого. На самом деле я передал первое значение в качестве аргумента функции, а второе значение представляет его, прежде чем что-либо делать в этой функции.

Ответы [ 3 ]

1 голос
/ 25 февраля 2012

Значение в левом столбце является адресом массива. Поскольку массив имеет фиксированный размер, Visual Studio отображает все его элементы в столбце значений.

Здесь есть два разных адреса и, следовательно, отображаются два разных значения.

1 голос
/ 25 февраля 2012

Первая часть (0x...) - это адрес переменной, которую вы смотрите. Далее следует распечатка содержимого памяти по этому адресу.

Вторая переменная / область памяти, которую вы смотрите, не является "представлением" 37487 ..., она содержит другое значение.

1 голос
/ 25 февраля 2012

0x0022f844 - пример шестнадцатеричного числа. Это (по умолчанию) формат, используемый для отображения адресов. Таким образом, это значение, которое варьируется от запуска к запуску, является «понятным человеку» представлением адреса области памяти, в которой находится значение. Бесполезно помещать это в файл. Вместо этого сохраните свое значение.

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