Avatar ·

À 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 ```