私はMarshal.GlobalHAlloc
メモリを割り当てるために使用します。ドキュメントにあるように、「このメソッドは、Kernel32.dllからWin32LocalAlloc関数を公開します。」GlobalAlloc
のドキュメントには、8バイトで整列されると記載されていますが、LocalAlloc
整列については何も述べられていません。
たとえば、1024バイトを割り当てて、16で整列されていることを確認したいのですが、1024 + 16バイトを割り当てた場合、ポインタ%16をチェックしても機能しますか?結果が0の場合は、メモリが調整されていることを意味します。0でない場合は、期待に合うようにポインタをインクリメントするだけです。問題は、ポインタを整列させた場合、それが実際に物理メモリに整列されているかどうかわからないことです。