无范围内存结构

时间:2018-11-03 11:16:30

标签: c#

我很困惑。

我有这些结构。

[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;

我不想使用编组。

编辑: 错误消息:内存访问冲突

0 个答案:

没有答案