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
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen