0
오늘 포인터의 이상한 초기화를 보았습니다. 다음과 같이 보입니다 :생성시 변수에 포인터를 캐스팅하십시오.
struct A
{
void* data;
int bufLen;
...
}
void fun(A* a, int* result)
{
SomeClass* b = new (a->data) SomeClass();
}
완전히 멋지며 컴파일도 작동하지만 왜 그런지는 알 수 없습니다. 변수 b
의 초기화로 어떤 일이 벌어지고 있는지 알고 싶습니다. 캐스트입니까? 새로운 메모리 슬롯에 변수 a->data
사본이 있습니까?
[placement'new'] (https://isocpp.org/wiki/faq/dtors#placement-new)라고합니다. – Biffen
가능한 "[placement new"에 어떤 용도가 있습니까?] (http://stackoverflow.com/questions/222557/what-uses-are-there-for-placement-new) – user463035818
감사합니다. @Biffen. 하나의 질문 : 예를 들어, 다른 스레드에 정보를 전달하기 위해'SomeClass' 변수를 사용할 수 있습니까? 가능한 경우,'fun' 함수로 descrutor를 호출 할 필요가 있습니까? – Astinog