Abort et les destructeurs

De RAD Studio
Aller à : navigation, rechercher

Remonter à Destructeurs - Index


Si vous appelez abort n'importe où dans un programme, aucun destructeur n'est appelé, pas même pour les variables globales.

Il est possible d'appeler un destructeur explicitement, ceci de deux façons : indirectement par un appel à delete, ou directement en utilisant le nom qualifié entier du destructeur. L'opérateur delete peut servir à détruire des objets qui ont été alloués à l'aide de new. Les appels explicites au destructeur ne sont nécessaires que pour des objets qui ont reçu une adresse spécifique par le biais d'appels à new.

#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
}

Voir aussi