私はLayoutKind.SequentialとLayoutKind.Explicitがクリアだと思いますが、LayoutKind.AutoはどのようにC#で処理されますか?StructLayout.AutoはシーケンシャルおよびExplicitと比べて何を意味しますか?
1
A
答えて
0
1
documentationかなり明確ようだ:
ランタイムが自動的に管理されていないメモリ内のオブジェクトの メンバーのための適切なレイアウトを選択します。この 列挙メンバで定義されたオブジェクトは、マネージコードの外部に公開することはできません。 これを行おうとすると例外が生成されます。
つまり、レイアウトは動的であり、オブジェクトがマネージコードの外で使用できなくなることを意味します。
1
MSはhere
共通言語ランタイムは、デフォルトで自動レイアウト値を使用していますと言います。 Auto値に関連するレイアウト関連の問題を軽減するには、C#、 Visual Basic、およびC++コンパイラは値 の型のシーケンシャルレイアウトを指定します。
4
LayoutKind.Auto
「これらのフィールドに対応するバイトを並べ替える権限をCLRに与えます」という意味です。これは、メモリの使用、パッキングなどのフィールドをどのように再編成するかを正確に決定します。 の変更は、ドキュメントで指定されていません。これはおそらく、構造の記述方法に関係のない実装の詳細なので、おそらくです。
アンマネージコードは、これらのフィールドが特定の順序になることを期待しているため、アンマネージコードに渡すと、これは常に悪いことです。それらの可能な再編成は、意図しない結果をもたらす可能性があります。そのため、LayoutKind.Auto
構造体をアンマネージコードに公開することはできません。
関連する問題
- 1. 「APIスロットル」および「APIスロットル警告」とは何を意味しますか?
- 2. 「ワーカー」という概念はプログラミングにおいて何を意味しますか?
- 3. Logcat Messageのpid、uid、およびgidsの意味は何ですか?
- 4. Microsoft Visual Studioのコンパイルオプション/ DPROFILEおよび/ UPROFILEの意味は何ですか?
- 5. フレームワーク、プログラミング言語、およびスクリプト言語は何を意味していますか?
- 6. [...]はPythonの出力として何を意味しますか?
- 7. 「eは65537(0x10001)」とは何を意味していますか?
- 8. MirthはMirthとは何を意味していますか?
- 9. ANTでは「**」とは何を意味していますか?
- 10. Perlでは "$$ q"とは何を意味していますか?
- 11. PHPでは「:」とは何を意味していますか?
- 12. getActivity()は何を意味しますか?
- 13. (+ var)は何を意味しますか
- 14. IndexOutofRangeExceptionは何を意味しますか?
- 15. UnmappableCharacterExceptionは何を意味しますか?
- 16. バックスラッシュは何を意味しますか?
- 17. {}は何を意味しますか?
- 18. new()は何を意味しますか?
- 19. 「ネットワークパフォーマンス」は何を意味しますか?
- 20. javascript:voidは何を意味しますか?
- 21. PHPで「++」とは何を意味していますか?
- 22. hibernate.connection.urlで 'shutdown ='とは何を意味していますか?
- 23. hibernate.default_schemaとは何を意味していますか?
- 24. .delegate = selfとは何を意味していますか?
- 25. shで "$ {x %% *}"とは何を意味していますか?
- 26. プロローグで/ 2/3とは何を意味していますか?
- 27. ハスケルで "ls"とは何を意味していますか?
- 28. 「バンク」とは何を意味していますか? Wikipediaの
- 29. javascriptで_(variable_name)とは何を意味していますか?
- 30. コマンドラインで「プログラム」とは何を意味していますか?
[documentation](http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.layoutkind.aspx)の内容を理解できませんでしたか? – Oded
@Odedドキュメントには、Autoがどのように動作するかの内部動作が指定されていません。私はこのクエストインがそれが得ているdownvotesに値するとは思わない。 –
@JohnFeminella - 質問は明確ではないので、下落しています。 OPは、彼が理解していないことを特定しなかった。 – Oded