簡単にコピー可能なオブジェクトを構築するために "memcpy" を利用する場合の懸念
C では、簡単にコピー可能なオブジェクトを構築するために "memcpy" を使用することの妥当性コピー可能な型については議論の対象となっています。この記事では、このコードを取り巻く微妙なニュアンスと不確実性について検討します。
「memcpy」によるオブジェクトの存続期間が不確かである」
問題の核心は、「」であるかどうかを判断することにあります。 *b" は、ライフタイムが開始されたオブジェクトを表し、そうであれば、このライフタイムの開始時期を表します。C 標準はこれについて沈黙を保っています。
暗黙的なオブジェクト作成に関する提案と現状
この曖昧さに対処するために、低レベルのオブジェクト操作中に暗黙的なオブジェクト作成を提唱する提案 p0593 が提出されました。この提案された変更は、そのようなシナリオに対して定義された動作を提供する予定です。
ドラフト C 14 標準のガイドライン
C 14 ドラフト標準セクション 1.8 [intro.object] に従って、オブジェクトは主に定義を通じて作成されます。 、new-expressions、または特定の実装プロセス。自明にコピー可能な型に関するセクション 3.9 [basic.types] では、コピーがそのように指定されています。値が適切に復元される限り、そのようなオブジェクトのバイトは許容されます。
進行中の議論と代替アプローチ
「ub メーリング リスト」は、次のような活発な議論を促進しました。このトピックでは、活字によるコピーの回避に重点を置いています。
結論
「memcpy」を使用して簡単にコピー可能なオブジェクトを「構築」するという問題は、C 標準内で未解決のままであり、潜在的な未定義の動作の余地が残されています。 p0593 などの進行中の議論と提案は、この問題を明確にして対処し、C での低レベルのオブジェクト操作の確実性を高めることを目的としています。
以上が「memcpy」は C で簡単にコピー可能なオブジェクトを構築する有効な方法ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。