構造体をRustの16バイト境界に揃える必要があります。 repr
attributeを使用してアラインメントに関するヒントを示すことは可能ですが、この正確な使用例はサポートしていません。構造体を指定されたバイト境界に揃えるにはどうすればよいですか?
私が達成しようとしているものの機能テストは、このような
assert_eq!(mem::align_of::<Foo>(), 16);
または代わりにそのタイプFoo
、
println!("{:p}", Bar::new().baz);
は常にA印刷さbaz
ようなフィールドを持つ構造体であるBar
16で割り切れる数。
これは現在Rustで可能ですか?回避策はありますか?
ヒープ内の構造体を特定の位置合わせにしたいとしますか?私はスタックに割り当てられた型の整列を認識していませんが、不安定な['allocate'](http://doc.rust-lang.org/std/rt/heap/fn.allocate.html)には整列があります引数。 – Shepmaster
また、パッキングは整列の減少と言います。構造体のメンバ*を常に特定の位置に配置する必要があると言っていますか?いくつかのサンプルコード、ASCIIアートのメモリダイアグラム、またはあなたがこれを行う必要がある理由を説明する文章で質問を補強し、私よりも賢明な人すべてがあなたを助けることができます。^_^ – Shepmaster
フィードバックのおかげで@Shepmaster!私は一般的に整列していたが、はい、私の具体的なユースケースはスタックです。私は質問を明確にするように更新します。 –