char* を使用して、メモリ アクセスを行うクロス プラットフォーム コードを記述する場合に落とし穴はありますか?
更新: たとえば、逆参照された char* を特定の型 (int など) にキャストする前に、アドレスがその型のサイズに合わせて配置されているかどうかを確認する必要がありますか? 特定のアーキテクチャは、アライメントされていないアクセスで奇妙な結果を返しますか?
メモリの問題をデバッグする方法をよりよく理解するために、プレイ メモリ アロケータに取り組んでいます。ポインター演算を実行し、void* よりも逆参照できるため、char* の方が好ましいと考えるようになりましたが、本当ですか? 次の仮定は、さまざまな一般的なプラットフォームで常に当てはまりますか?
sizeof(char) == 1
sizeof(char*) == sizeof(void*)
sizeof(char*) == sizeof(size_t)