私はC#のバックグラウンドを持っています。私はCのような低水準言語の初心者です。
C#では、 struct
のメモリはデフォルトでコンパイラによってレイアウトされます。コンパイラは、データフィールドを並べ替えたり、フィールド間に追加のビットを暗黙的に埋めたりすることができます。そのため、正確なレイアウトのためにこの動作をオーバーライドするために、いくつかの特別な属性を指定する必要がありました。
AFAIK、Cはstruct
、デフォルトでは、のメモリレイアウトを並べ替えたり整列したりしません。ただし、見つけるのが非常に難しい小さな例外があると聞きました。
Cのメモリレイアウト動作とは何ですか?何を再注文/調整する必要がありますか?
#pragma pack
は、セマンティクスをよりきめ細かく制御して、同じ効果を実装します。