前書き この記事は、2023のUnityアドカレの12/23の記事です。 今年は、完走賞に挑戦してみたいと思います。Qiita君ぬい欲しい! はじめに C#は「マネージド」というだけあって、普段はメモリ上でのふるまいなどはあまり意識しなくて済むようになっています。しかし、もう一つの顔があり、unsafeコンテキストや、Marshal、Unsafeクラスなど、ローレベルまでプログラマが制御できる仕組みも備わっております。 StructLayoutで構造体サイズを指定 構造体がメモリ上でどのようなレイアウトをとるかについては、普段は意識せずともコンパイラやランタイム(JIT)が良しなにしてくれます。しかし、[StructLayout]属性を使うことでこれを指定することもできます。 例えばこのようにすると、フィールドはbyteが1つだけ、賞味1byteしかないですが、512byteとしてあつかう
