abort and Destructors

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Destruktoren - Index


Wird die abort-Routine in einem Programm aufgerufen, werden keine Destruktoren aktiviert. Dies gilt auch für Variablen mit globalem Gültigkeitsbereich.

Ein Destruktor lässt sich auf eine der beiden folgenden Arten aufrufen: indirekt über einen Aufruf von delete oder direkt über den komplett qualifizierten Namen des Destruktors. Mit delete können auch Objekte gelöscht werden, die mit new erzeugt wurden. Explizite Aufrufe von Destruktoren sind nur für Objekte nötig, die durch Aufrufe von new spezifische Adressen erhalten haben.

#include <stdlib.h>

class X {
public:
    // …
    ~X(){};
    // …
};

void* operator new(size_t size, void *ptr)
{
    return ptr;
}

char buffer[sizeof(X)];

void main()
{
    X* pointer = new X;
    X* exact_pointer;
    exact_pointer = new(&buffer) X; // pointer initialized at
                                        // address of buffer
    // …
    delete pointer;                     // delete used to destroy pointer
    exact_pointer->X::~X();          // direct call used to deallocate
}

Siehe auch