我有以下简单的测试代码:
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
时,我会看到:
在预期的字节序列开始之前,我还有另外八个字节,即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
…
前八个字节是什么?我需要在内存窗口的地址框中键入什么表达式以直接转到实际字节数组的开头?
答案 0 :(得分:2)
您的示例来自32位系统吗?
您看到的是:
在64位系统上,一个字/指针是8个字节而不是4个字节,并与8个字节的“网格”对齐