Object an einer bestimmten Adresse erstellen (ohne new...)



  • Hallo,

    Kann man ein Object an einer bestimmten Adresse erstellen?
    Ich meine, wenn man mit new() ein Object erstellt, dann wird
    einem ja die Adresse zugewiesen.

    Da ich aber mit Shared-Memory arbeite, hab ich mir am Anfang
    Platz für das Object geschafft. Nun hab ich ein Zeiger auf den
    Platz für das Object.
    Aber wie krieg ich das Object da rein?
    (Sprich, ich will den Konstruktor aufrufen)

    Die dirty Methode erst ein normales Object zu erstellen und
    dann an die bestimmte Adresse zu kopieren funzt natürlich,
    würde es aber lieber ohne machen...

    Wenn ihr mein Problem versteht, könntet ihr mir ja vielleicht
    helfen 🙂

    Gruss & danke!

    Stef



  • placement new ist das was du suchst



  • Mit placement new:

    void *a; // Zeiger auf freien Speicher
    X *x = new (a) X(); // Plaziert Objekt nach a, ruft Konstruktor auf

    ...

    x->~X(); // Ruft Destruktor auf ohne a zu loeschen



  • Ich danke euch 🙂
    Klappt super!!


Anmelden zum Antworten