ufcpp/UfcppSample

複合型のレイアウト > Autoレイアウト の Sample の構造体サイズ

Opened this issue · 2 comments

haro2 commented

いつも参考にさせてもらっています。

[TOP C# によるプログラミング入門 [相互運用] 複合型のレイアウト](https://ufcpp.net/study/csharp/interop/memorylayout/#auto-layout)

を見ながら sizeof 演算子で構造体サイズを確認しているときに気付いたのですが、
本文には「12バイトのレイアウトになります。」とありますが、LINQPad で動かしてみたら16バイトになりました。

Auto だから処理系によってレイアウトが違うから?と一瞬考えましたが
レイアウト図の A・C で4バイトとある箇所が実際には8バイトになるので計16バイトになるのではと思います。
ただし、試していませんが 32bit 処理系で動かしたら A・C が4バイトになって計12バイトになるような気がします。

ufcpp commented

32ビット環境と64ビット環境差ですかね。おそらく。
おっしゃる通り Auto だと環境によって変わる可能性あります。32/64に限らず、バージョン変わってサイズが変わっても文句は言えないかと。

文面調整するかどうかは考えてみます。

haro2 commented

さっそくの返信ありがとうございます。
明記していませんでしが私のは 64bit 環境で動かしてみた結果で、仰るように Auto なので...と考えるととやかく言うほうがどうかしてますね(すみません)。

これからも勉強になるいい記事を勝手に期待させて貰います。
それではお邪魔しました。