ホームページ > バックエンド開発 > C++ > `new int[0]` は C でメモリを割り当てることができますか?またその影響は何ですか?

`new int[0]` は C でメモリを割り当てることができますか?またその影響は何ですか?

Patricia Arquette
リリース: 2024-12-29 18:00:26
オリジナル
872 人が閲覧しました

Can `new int[0]` Allocate Memory in C  , and What are the Implications?

「new int[0]」を使用して C で空の配列を割り当てることができますか?

C での new 演算子の使用法メモリがよく使われます。ただし、new int[0] を使用した空の配列の割り当てに関して疑問が生じます。このコードはメモリを割り当てますか? また、標準ではそれについてどのようなことが指定されていますか?

標準パースペクティブ

C 標準の 5.3.4/7 によると、直接-new-declarator 式がゼロに評価されると、割り当て関数は要素のない配列を割り当てます。それにもかかわらず、3.7.3.1/2 では、サイズ 0 のリクエストから生じるポインターの逆参照が未定義の動作につながることを強調しています。

実際には

標準では次のことが許容されているにもかかわらず、空の配列を割り当てても、この操作は失敗する可能性があることが警告されます。したがって、直接メモリ アクセスを回避して、割り当て解除のために割り当てられたメモリを配列削除に安全に渡すことのみが可能です。

特記事項

規格の脚注では、この動作は、C の malloc() または calloc() のアプローチを模倣しており、ゼロリクエストは非 null ポインターを返します。この C からの逸脱により、プラットフォーム間の相互運用性が保証され、 C での空の配列の割り当てが可能になります。

以上が`new int[0]` は C でメモリを割り当てることができますか?またその影響は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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