В моем коде я вычисление значения uint64, то литье это так:переосмысление UInt64 как структура
return *(Cell*)packedUInt64;
Cell является структурой. Marshal.SizeOf (new Cell()) печатает 8, поэтому он должен совпадать с UInt64, но вышеприведенный сброс с AccessViolationException. Возможно, я мог бы попробовать более безопасные методы, такие как Marshal.StructureToPtr, но мне все еще интересно, где ошибка в моем коде? Может быть проблема несоответствия выравнивания?
Одна из причин, по которым я уклоняюсь от Marshal.StructureToPtr - это то, что он немного медленный. –
'StructureToPtr' - это именно то, что вам нужно использовать, учитывая, что вы даже спрашиваете, как избежать его использования. –