Malloc 및 생성자: 탐색 가이드
메모리 할당 영역에서 표준 라이브러리는 std::malloc 및 new 표현식을 모두 제공합니다. . new는 생성자를 통해 객체를 편리하게 초기화하는 반면 std::malloc은 그렇지 않습니다. 이는 질문을 제기합니다. std::malloc을 사용할 때 어떻게 객체를 생성하고 객체의 생성자 호출을 보장할 수 있습니까?
한 가지 간단한 접근 방식은 의도된 목적에 맞게 새 표현식을 간단히 사용하는 것입니다. 그러나 std::malloc을 고수하려는 경우 대체 방법이 있습니다. 즉, "placement new"라는 기술을 사용하여 생성자를 명시적으로 호출하는 것입니다.
Placement New 사용
새 배치를 사용하면 우리가 지정한 메모리 위치에 객체를 명시적으로 생성할 수 있습니다. 이를 달성하려면:
새 배치 구문은 다음과 같습니다.
<code class="c++">pointer = (type*)malloc(sizeof(type)); new (pointer) type();</code>
객체를 생성한 후 명시적인 ~type() 구문을 사용하여 객체를 삭제하고 free로 메모리를 해제하는 것을 잊지 마세요.
다음은 새로운 배치를 보여주는 코드 조각입니다.
<code class="c++">A* a = (A*)malloc(sizeof(A)); new (a) A(); a->~A(); free(a);</code>
새로운 배치를 활용하면 생성자를 계속 호출하면서 std::malloc을 사용하여 객체를 생성할 수 있습니다.
위 내용은 `std::malloc`을 사용하여 객체를 어떻게 구성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!