ホームページ >バックエンド開発 >C++ >C で `new int[0]` を使用してサイズ 0 の配列を割り当てるとどうなりますか?

C で `new int[0]` を使用してサイズ 0 の配列を割り当てるとどうなりますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 20:12:22731ブラウズ

What Happens When You Allocate a Zero-Sized Array with `new int[0]` in C  ?

C new int[0]

new 演算子を使用してメモリを割り当てるとき、よくある疑問が生じます。要求された配列サイズはゼロですか?

驚くべきことに、コードはスニペット:

cout << new int[0] << endl;

は、メモリが割り当てられたことを示すアドレスを出力します。 C 標準では、この動作に対処しています。

空の配列の割り当てと使用法

C 標準の 5.3.4/7 に記載されているように、サイズがゼロの配列を割り当てることができます。ただし、3.7.3.1/2 に従って、その使用法は未定義です。

処理ゼロ サイズの配列

メモリが正常に割り当てられた場合でも、逆参照が安全であるとは保証されません。有効なメモリを指すという保証はありません。

結論

new int[0] で空の配列を割り当てることは許可されていますが、割り当てられたメモリは未定義の動作をするため、避ける必要があります。このように割り当てられたメモリは、delete を使用して削除する必要があり、リソースが適切に解放されるようにする必要があります。

演算子 new() は、サイズがゼロのリクエストであっても null 以外のポインタを返すという標準要件に注意することが重要です。 malloc()の動作。ただし、実際の割り当ては依然として失敗する可能性があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。