Каковы первые 8 байтов в C # byte [] и как их пропустить в окне памяти Visual Studio? - PullRequest
0 голосов
/ 11 января 2019

У меня есть следующий простой тестовый код:

List<byte> test = new List<byte>();
for (int i = 0; i <= 0xFF; i++)
{
    test.Add((byte)i);
}
byte[] testAsArray = test.ToArray();

Я ломаюсь после этой последней строки. В окне locals в Visual Studio массив testAsArray запускается, как и следовало ожидать, с testAsArray [0], равным 0x00. Но когда я открываю окно памяти Visual Studio и набираю testArray в поле адреса, это то, что я вижу:

vs memory window screenshot

Перед началом ожидаемой последовательности байтов у меня есть восемь других байтов, то есть память в массиве локаций testArray начинается

30 72 12 04 00 01 00 00
00 01 02 03 04 05 06 07
08 09 0a 0b 0c 0d 0e 0f

Каковы ведущие восемь байтов? Какое выражение мне нужно будет ввести в адресную строку окна памяти, чтобы перейти непосредственно к заголовку фактического байтового массива?

1 Ответ

0 голосов
/ 11 января 2019

Ваш пример из 32-битной системы?

что вы видите:

  • 4 байта для заголовка объекта Word и
  • 4 байта для указателя таблицы методов

В 64-битной системе слово / указатель составляет 8 байтов вместо 4 и выровнены по 8-байтовым "сеткам"

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