C#byte []中的前8个字节是什么?如何在Visual Studio的内存窗口中跳过它们?

时间:2019-01-11 10:52:32

标签: c# visual-studio

我有以下简单的测试代码:

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

我在最后一行之后中断。在Visual Studio的locals窗口中,数组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 :(得分:2)

您的示例来自32位系统吗?

您看到的是:

  • 4个字节的对象标头字和
  • 方法表指针的4个字节

在64位系统上,一个字/指针是8个字节而不是4个字节,并与8个字节的“网格”对齐