私は C++ を使用しており、次の構造を持っています。
struct ArrayOfThese { int a; int b; }; 構造体データポイント { int a; int b; int c; };
メモリ内では、各 DataPoint の最後に 1 つ以上の ArrayOfThese 要素が必要です。DataPoint ごとに常に同じ数の ArrayOfThese 要素があるとは限りません。
膨大な数の DataPoint を集めてネットワーク経由でストリーミングする必要があるため、すべての DataPoint とその ArrayOfThese 要素を連続させたいと考えています。固定数の ArrayOfThese 要素のためにスペースを浪費することは容認できません。
C では、DataPoint の最後に として宣言された要素を作成しArrayOfThese d[0];
、DataPoint に加えて、多くの ArrayOfThese 要素に十分な余分なバイトを割り当て、ダミー配列を使用してそれらにインデックスを付けます。(もちろん、ArrayOfThese 要素の数は DataPoint のフィールドにある必要があります。)
C++ では、新しい配置と同じ長さ 0 の配列ハックを使用して正しいアプローチをとっていますか? もしそうなら、配置 new は、同じメモリプールからの new への後続の呼び出しが連続して割り当てられることを保証しますか?