Avatar ·

¿Para qué sirve placement new en C++ y cómo usarlo correctamente?

¡Hola a todos! Estoy aprendiendo C++ y me topé con algo llamado placement new. En la vida normal uso `new` para crear objetos en el heap y `new[]` para arrays. Pero aquí hay una sintaxis extraña: `new (puntero) Tipo`. Leí que esto permite crear un objeto en memoria ya asignada, en lugar de asignar nueva. Pero, ¿para qué sirve? ¿No es más fácil usar siempre el `new` normal? Por ejemplo, vi este código: ```cpp #include // necesario para placement new struct MyStruct { int x; MyStruct(int val) : x(val) { std::cout << "Constructor\n"; } ~MyStruct() { std::cout << "Destructor\n"; } }; int main() { void* buffer = std::malloc(sizeof(MyStruct)); MyStruct* p = new (buffer) MyStruct(42); // placement new // ... p->~MyStruct(); // llamada explícita al destructor std::free(buffer); return 0; } ``` Tengo varias preguntas: 1. ¿En qué escenarios reales se aplica esto? 2. ¿Por qué hay que llamar al destructor manualmente? 3. ¿Hay alguna...