C/C でサイズ 0 の配列を定義することの影響
C/C で配列を定義する場合、配列のサイズを指定する必要があります。 int array[0] の場合のように、サイズが 0 の配列を定義する動作について興味が湧くことがよくあります。
提供されたコード例では、GCC はコンパイル時にエラーや警告を生成しません。これにより、長さ 0 の配列がコンパイル中に最適化されるかどうかという疑問が生じます。
ISO 9899:2011 (C99) 標準によれば、配列のサイズを 0 にすることはできません。標準では、配列のサイズが定数式の場合、ゼロより大きい値を持たなければならないと明示的に規定されています。このルールは、プレーン配列と可変長配列 (VLA) の両方に適用されます。
言語標準にもかかわらず、一部のコンパイラでは、レガシー互換性または特定の目的のためにサイズ 0 の配列の定義を許可する場合があります。ただし、サイズ 0 の配列の動作が異なるコンパイラ間で一貫していることは保証されておらず、サイズ 0 の配列にアクセスしようとすると、未定義の動作が発生する可能性があります。
そのため、これをお勧めします。サイズがゼロの配列の定義を回避し、条件付きでメモリを割り当てるなど、他の手段で配列サイズがゼロになる可能性があるケースを処理します。
以上がC/C でサイズ 0 の配列を定義するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。