配列の New の配置は移植性を確保できますか?
New の配置は C で配列を初期化する手段を提供しますが、配列に使用すると潜在的な可能性が生じます。移植性の問題。具体的には、new[] から取得されたポインタが指定されたアドレスから逸脱し、配列へのバッファ割り当てが妨げられる可能性があります。
標準の 5.3.4、注 12 ではこの矛盾を認めており、配列に適切なサイズ。例では問題を強調しています。
この例では、コンパイラーは配列要素の数をバッファーの最初の 4 バイトに格納しているようです。その結果、バッファには sizeof(A) * NUMELEMENTS バイトの領域のみが割り当てられるため、メモリ破損が発生します。
移植性に関する懸念の回避:
これらの移植性を軽減するにはこの問題については、次のアプローチを検討してください。
new[] を配置するための追加のオーバーヘッドは、実装とクラス定義によって異なる可能性があることに注意することが重要です。それにもかかわらず、この手動アプローチにより、さまざまなコンパイラー間での移植性が確保され、オーバーヘッドを動的に確認する必要がなくなります。
以上が配列に New を配置すると、C での移植性が保証されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。