>C++では、voidへのポインタを、別の型へのポインタに代入キャストがする際には、キャストが必須です。
当然キャストをしないと代入不可能と思いますが(Cは可能でもおもいきり環境破壊の恐れがありますね)
>とあり、その理由を境界調整で説明しています。
>そのコラムの最後の方に
>ポインタを他の型へのポインタに型変換するということは、その値までもが変わる可能性のある危険な行為です。
>そのため、C++では、voidへのポインタを別の型へのポインタに代入する局面では、明示的なキャストが必須となっているのです。
当然キャストをすれば正しいアライメントになるとはおもいますが。
汎用ポインタはあらゆるポインタ型に変換できるポインタ型です
多くはどのような型も受け取れる関数を作成するのに使用されます
汎用ポインタを使用すれば、ポインタ型であればどのような型でも受け取ることができます
void型のポインタを逆参照するには必ず型キャストします
キャストはC言語では任意ですが、C++では必ず必要となります
void型ポインタはどのデータ型にも変換することができます
アライメントについて
http://nagayasu-shinya.com/cpp-aligned-allocate/