Colocación de C ++ nueva

Lo siento si esta pregunta suena estúpida, pero estoy empezando a aprender C ++ y hay algo que me confunde acerca de la ubicación nueva

He estado leyendo C ++ Primer (que creo que es un muy buen libro para aprender C ++), y en la sección de ubicación nueva hay un ejemplo. El ejemplo utiliza una matriz char para proporcionar espacio de memoria para la nueva ubicación

const int BUF = 512;
const int N = 5;
char buffer[BUF];
double * pd1;
pd1 = new (buffer) double[N];

Mi pregunta es ¿por qué utiliza una matriz char para proporcionar espacio de memoria para la nueva ubicación? Además, la última línea del código anterior es la asignación de memoria para una matriz de doble, ¿cómo es eso posible cuando el espacio de memoria original contiene una matriz de caracteres? Si la nueva ubicación está utilizando el espacio de memoria de la matriz de caracteres, ¿significa esto que cuando asignamos la doble matriz se sobrescribe la matriz de caracteres en esa memoria?

Una vez más, disculpe si la pregunta es extraña, pero espero haberlo dejado bastante claro.

Respuestas a la pregunta(5)

Su respuesta a la pregunta