>백엔드 개발 >C++ >C에서 간단하게 복사 가능한 객체를 생성하는 데 memcpy를 사용할 수 있습니까?

C에서 간단하게 복사 가능한 객체를 생성하는 데 memcpy를 사용할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-19 20:32:02636검색

Can memcpy be Used to Construct a Trivially-Copyable Object in C  ?

memcpy를 사용하여 간단하게 복사 가능한 객체 생성

C로 작업할 때 개발자는 memcpy를 사용하여 객체의 표현 바이트입니다. 특히, 이 행위가 객체 생성 또는 할당을 구성하는지 여부에 대한 의문이 제기됩니다.

C 표준에서는 이 시나리오를 명시적으로 다루지 않기 때문에 이 질문은 아직 해결되지 않은 상태로 남아 있습니다. 그러나 특정 제안과 토론은 문제에 대한 지침을 제공합니다.

공식 표준의 관점

현재 C 14 초안 표준에는 다음과 같이 명시되어 있습니다. "객체는 [.. .] 정의, new-expression 또는 필요할 때 구현에 의해."

또한, 사소한 복사 가능한 유형(예: 3.9 [basic.types])의 복사를 다루는 기존 절은 주로 초점을 맞춥니다.

p0593 제안

p0593 제안은 이 문제를 해결하고 하위 수준 개체 조작을 위한 암시적 개체 생성을 정의하려고 시도합니다. 새로 할당된 스토리지 내에서 충분히 사소한 유형의 객체가 자동으로 생성되어 잘 정의된 동작을 보장하도록 제안합니다.

p0593에 따르면 다음 작업은 암시적으로 객체를 생성해야 합니다.

  • 생성 문자 배열, 부호 없는 문자 또는 std::byte
  • malloc, calloc, realloc, 연산자 new, 연산자 new[]
  • std::allocator::allocate
  • memmove (소스 저장소를 임시 영역에 복사한 후)

기타 고려 사항

[ub] 복사를 피하기 위한 유형 말장난에 대한 논의는 복잡성을 더욱 강조합니다.

전반적으로 이 주제에 대한 현재 지침은 해석의 여지가 있지만 p0593과 같은 제안은 이러한 작업에 대한 명확성과 정의된 동작을 제공하는 것을 목표로 합니다.

위 내용은 C에서 간단하게 복사 가능한 객체를 생성하는 데 memcpy를 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.