代码之家  ›  专栏  ›  技术社区  ›  dumbledad

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

  •  2
  • dumbledad  · 技术社区  · 6 年前

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

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

    我在最后一行之后就分手了。在VisualStudio的“局部变量”窗口中,数组testAsArray的启动与我预期的一样,testAsArray[0]等于0x00。但是当我打开VisualStudio的内存窗口并键入 testArray 在地址框中,我看到的是:

    vs memory window screenshot

    30 72 12 04 00 01 00 00
    00 01 02 03 04 05 06 07

    前导的八个字节是什么?我需要在内存窗口的地址框中键入什么表达式才能直接转到实际字节数组的头部?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Falco Alexander    6 年前

    您的示例来自32位系统?

    你看到的是:

    • 4个字节用于对象标题和单词

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