Flexible array member とは

フレキシブルアレイメンバーは、Cプログラミング言語のC99標準で導入された機能です(特に、セクション6.7.2.1、アイテム16、ページ103)。これは、構造体のメンバであり、指定された次元のない配列であり、次の例のように、そのような構造体の最後のメンバでなければなりません。
このような構造体上のsizeof演算子は、あたかも省略されているよりも多くの末尾の埋め込みを持つことができる点を除いて、柔軟な配列メンバーが省略されているかのように、構造のサイズを与えます。そのため、次の例のように、動的割り当てのサイズを決定するときにoffsetofを使用することが望ましいです。
このような構造体をヒープに割り当てる場合、一般に、次の例のように、フレキシブル配列メンバーのためのスペースを確保する必要があります。
フレキシブルな配列メンバーを持つ構造を使用する場合、そのメンバーの実際のサイズに関するいくつかの規約を定義する必要があります。上記の例では、メンバーarrには倍精度のlenが使用されています。
以前のC言語の標準では、柔軟な配列メンバーではなく、サイズがゼロの配列メンバーを宣言するのが一般的でした。 GCCコンパイラは、このような目的のためにゼロサイズの配列を明示的に受け入れます。
C ++には柔軟な配列メンバーがありません。