2016-09-24 17 views
0

私はmallocを使い慣れていて、mallocを整列しています。私はそれらを使う方法を知っています。しかし、私は、標準のmallocの代わりに整列したmallocを使うべきかどうかを正確にはわかりません。私に説明してもらえますか?皆さん、ありがとうございました。整列したmallocと標準のmallocの違いは?

+0

言語?私はCと仮定しますが、他の環境の詳細(OS、言語実装など)も提供する必要があります。標準Cには 'malloc'のみがあり、すべての標準データ型に対して正しく整列されていることが保証されています。 – paxdiablo

+0

私はUbuntuでC11標準で使用しています – blackcafe

+0

タグとして追加しました。必要に応じて確認および/または変更してください。 – paxdiablo

答えて

1

glibc documentationは、それが合理的に明確にあなたがaligned_allocを使用する必要があります:

GNUシステムでmallocまたはreallocによって返されたブロックのアドレスは常に(64ビットシステム上または16)8の倍数であります。アドレスが2より大きい倍数のブロックを必要とする場合は、aligned_allocまたはposix_memalignを使用してください。

mallocは、標準タイプのいずれに対しても適切に位置合わせされたメモリブロックを返すことをすでに保証していますが、より厳格なアライメントが必要な状況があるかもしれません。

SSE2(SIMD)命令のデータが16バイト境界で整列されている必要があるので、は8バイトの境界線のみを保証するシステムでもaligned_allocを使用すると、 。