동적으로 객체 배열을 생성해야 하는데, 기본 생성자가 아닌, 매개변수가 있는 생성자를 호출하여 생성해야 하는 상황이 생겼다. 크기가 정해진 동적배열이면 상관 없지만 (이니셜라이저 리스트를 사용하면 되니), 크기가 정해져 있는데 동적 배열을 사용할 이유가 없잖아...?
이때 사용하는게 placement new 이다. new의 과정 만약 C++을 배운지 얼마 되지 않았다면 new는 단순히 메모리를 동적으로 할당한다고만 알고있겠지만, new는 다음의 과정을 거친다. 메모리를 동적으로 할당한다.
동적으로 할당한 공간에 위치를 지정하여 생성자를 호출한다 메모리 공간을 가리키는 포인터를 반환한다. 여기서 생성자를 호출한다는 점이 C의 malloc과의 결정적인 차이점이다.
만약 std::string등을 malloc으로 동적할당해서 사용해본적이 있다면 십중팔구 런타임 에러를 마주했을텐데, 생성자를 호출하지 않아서 발생하는 문제점이다. 생성자를 호출하지 않아, 문자들이 저장될 공간을 동적으로 확보하...
원문 링크 : placement new (위치지정 new)