Avatar ·

Wozu braucht man placement new in C++ und wie verwendet man es richtig?

Hallo zusammen! Ich lerne C++ und bin auf so etwas wie placement new gestoßen. Im normalen Leben verwende ich `new`, um Objekte auf dem Heap zu erstellen, und `new[]` für Arrays. Aber hier gibt es eine seltsame Syntax: `new (Zeiger) Typ`. Ich habe gelesen, dass dies ermöglicht, ein Objekt in bereits zugewiesenem Speicher zu erstellen, anstatt neuen Speicher zuzuweisen. Aber wozu braucht man das? Ist es nicht einfacher, immer normales `new` zu verwenden? Zum Beispiel habe ich solchen Code gesehen: ```cpp #include // wird für placement new benötigt 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(); // expliziter Aufruf des De