어쩌다 Placement new 라는걸 알게됬는데 new(또는 malloc)을 통해 할당은 받앗지만 초기화되지않은 메모리가 있을때, 우리는 바로 이 메모리 위해 객체를 초기화시킬 수 있습니다. 이를 placement new라 합니다
라고 하더라구여... 이게 진짜 이해 안가던데 new를 했는데 초기화가 되지 않을수가 있어요? 그렇다면 생성자를 안만든거 아닌가?
어쩌다 Placement new 라는걸 알게됬는데 new(또는 malloc)을 통해 할당은 받앗지만 초기화되지않은 메모리가 있을때, 우리는 바로 이 메모리 위해 객체를 초기화시킬 수 있습니다. 이를 placement new라 합니다
라고 하더라구여... 이게 진짜 이해 안가던데 new를 했는데 초기화가 되지 않을수가 있어요? 그렇다면 생성자를 안만든거 아닌가?
new 라는 키워드는 할당과 초기화를 함. ::operator new 로 할당만 할 수 있음. new 는 ::operator new + 생성자로 이루어짐
malloc으로 할당 했거나 char[sizeof(Object)]에서 생성자를 실행하고 싶을 때 씀. - dc App
처음 알았는데 예시 코드 있음? 찾아보기 귀찮아서 ㅋㅋ
커스텀 얼로케이터같은 거에 버퍼 받아와서 초기화 할 때라던가
메모리 풀 만들때 씁니당 아니면 정렬된 메모리를 만들때 단순 new가 아닌 aligned malloc을 호출 하는데 여기에 생성자 까지 호출 할려면 new를 오버라이드 해서 내부적으로 aligned malloc-> 위치지정 new 하는 식으로도 만들 수 있슴 - dc App