À quoi sert le placement new en C++ et comment l'utiliser correctement ?
Bonjour à tous ! J'étudie le C++ et je suis tombé sur une chose appelée placement new. Dans la vie courante, j'utilise `new` pour créer des objets sur le tas et `new[]` pour les tableaux. Mais voilà une syntaxe étrange : `new (pointeur) Type`. J'ai lu que cela permet de créer un objet dans une mémoire déjà allouée, plutôt que d'en allouer une nouvelle. Mais à quoi cela sert-il ? N'est-il pas plus simple d'utiliser toujours le `new` classique ?
Par exemple, j'ai vu ce code :
```cpp
#include // nécessaire pour 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(); // appel explicite du destructeur
```