私のアプリケーションで私はメモリプールを持っています。私は起動時にすべてのメモリをuint64
配列(64ビットマシン)の形式で割り当てます。次に、この配列内に配置newを使用してオブジェクトを構築します。したがって、オブジェクト1は位置pool[0]
で開始し、オブジェクト2は位置で始まります。各オブジェクトは、少なくとも128ビットまたはsizeof(uint64)
の倍数(割り当てようとする場合にはさらにuint64
スロットが必要な場合)に及ぶためです。メモリプール返されたメモリアラインメント
プールから返されたすべてのメモリが正しく整列されると仮定するのは正しいですか?配列内の各uint64
はコンパイラによって適切に整列されるためです。もしそうなら、同じ方法で32ビットマシン上でuint32
を使用しますか?
これは、使用するコンパイラとメモリアロケータによって大きく異なります。あなたは何を使っていますか?これは、すべてのC++プログラムに対してグローバルに回答することはできません。 –
@LiranFunaro私のターゲットコンパイラはgccとclangです。アロケータは関係ありません。メモリはuint64のグローバルアレイです。 –
特定のアーキテクチャはありますか? –