ホームページ > バックエンド開発 > C++ > C/C でサイズ 0 の配列を定義するとどうなりますか?

C/C でサイズ 0 の配列を定義するとどうなりますか?

DDD
リリース: 2024-12-27 10:54:17
オリジナル
815 人が閲覧しました

What Happens When You Define a Zero-Size Array in C/C  ?

C/C でサイズ 0 の配列を定義するとどうなりますか?

int 配列などのサイズ 0 の配列の定義[0];、C または C では、言語標準に違反します。 ISO 9899:2011 標準によれば、配列のサイズはゼロより大きい正のサイズでなければなりません。

ただし、一部のコンパイラでは、古い構文を使用した従来のコードとの互換性のためにエラーや警告を発生させずにそのような定義を許可する場合があります。たとえば、GCC はサイズ 0 の配列の定義について文句を言いません。

サイズ 0 の配列の結果

コンパイラ エラーがないにもかかわらず、ゼロサイズの配列を定義すると、 size 配列を使用すると、未定義の動作が発生します。配列にはメモリが割り当てられず、配列にアクセスまたは使用しようとすると、クラッシュや予期せぬ結果が発生する可能性があります。

実際的な影響

コードに遭遇した場合サイズがゼロの配列を定義している場合は、それをエラーとして扱い、定義を修正するか、サイズが異なる場合に対処する必要があります。 zero.

最適化に関する考慮事項

ゼロサイズの配列はコンパイラによって最適化されません。一部のコンパイラは互換性の目的で少量のメモリを予約する場合があるため、実行可能ファイル内である程度のスペースを占有する可能性があります。

ゼロサイズ配列の代替使用

場合によっては、サイズ 0 の配列を末尾パディングのための構造体の縮退ケースとして使用できます。この技術は、構造が特定の位置に配置されていることを確認したり、後続の部材をパッドしたりするために使用されます。ただし、このサイズ 0 の配列の使用は特殊なアプリケーションであり、汎用のサイズ 0 の配列と混同しないでください。

以上がC/C でサイズ 0 の配列を定義するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート