我很困惑。
我有这些结构。
[StructLayout(LayoutKind.Sequential, Pack = 1, Size = 4 + 64 * 3)]
public struct MapBlock
{
public readonly uint Header;
public unsafe MapCells* Cells;
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct MapCells
{
public ushort TileID;
public sbyte Z;
}
MapBlock中的“ MapCells”参数是64个MapCell的数组。
我必须访问mapcell的特定索引,并为此而做:
MapBlock* mp = (MapBlock*) blockIndex.MapAddress;
MapCells* cells = (MapCells*) &mp->Cells;
var z = cells[my * 8 + mx].Z;
可以。 为什么如果我尝试这样做,那行不通?
MapBlock* mp = (MapBlock*) blockIndex.MapAddress;
MapCells* cells = &mp->Cells[0];
var z = cells[my * 8 + mx].Z;
我不想使用编组。
编辑: 错误消息:内存访问冲突