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 サイトの他の関連記事を参照してください。