> 백엔드 개발 > C++ > 본문

memcpy는 C에서 객체를 암시적으로 생성합니까?

Patricia Arquette
풀어 주다: 2024-11-10 17:51:02
원래의
859명이 탐색했습니다.

Does memcpy Implicitly Construct Objects in C  ?

C에서의 암시적 객체 생성: "구성"의 까다로운 사례

C에서 사용 시 메모리 복사(memcpy) 동작 사소하게 복사 가능한 유형을 사용하면 객체 수명 주기에 대한 의문이 생길 수 있습니다. 다음 코드 조각은 모호성을 보여줍니다.

핵심 질문은 T *b = static_cast로 시작하는 코드 세그먼트가 수명이 시작된 객체를 생성하는지 여부입니다. C 표준에서는 이 문제를 지정되지 않은 것으로 언급하여 명확성이 부족합니다.

memcpy를 객체 생성 작업으로 인식하도록 제안하는 논문인 N3751은 아직 표준에 채택되지 않았습니다. 현재 초안 표준은 정의, 새로운 표현식 또는 구현 요구를 통한 객체 생성을 언급하지만 memcpy를 사용하여 만든 복사본을 명시적으로 다루지는 않습니다.

p0593 제안은 암시적 객체 생성 개념을 도입하여 이러한 모호성을 해결하는 것을 목표로 합니다. 저수준 메모리 조작을 위해. memcpy 및 유사한 작업이 새로 할당된 저장소 내에 암시적으로 객체를 생성할 것을 제안합니다. 이는 제시된 코드 조각에 대해 잘 정의된 동작을 제공합니다.

그러나 p0593은 아직 검토되거나 승인되지 않았다는 점에 유의하는 것이 중요합니다. 따라서 간단하게 복사 가능한 유형과 함께 사용될 때 memcpy의 동작은 C 표준에서 지정되지 않은 상태로 유지됩니다.

위 내용은 memcpy는 C에서 객체를 암시적으로 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿