Partager via


Durée de vie des objets alloués avec new

Les objets alloués avec l'opérateur new ne sont pas détruits lorsque vous quittez la portée dans laquelle ils sont définis. Comme l'opérateur new retourne un pointeur désignant les objets qu'il alloue, le programme doit définir un pointeur avec une portée appropriée pour accéder à ces objets. Par exemple :

// expre_Lifetime_of_Objects_Allocated_with_new.cpp
// C2541 expected
int main()
{
    // Use new operator to allocate an array of 20 characters.
    char *AnArray = new char[20];

    for( int i = 0; i < 20; ++i )
    {
        // On the first iteration of the loop, allocate
        //  another array of 20 characters.
        if( i == 0 )
        {
            char *AnotherArray = new char[20];
        }
    }

    delete [] AnotherArray; // Error: pointer out of scope.
    delete [] AnArray;      // OK: pointer still in scope.
}

Une fois que le pointeur AnotherArray sort de la portée de l'exemple, l'objet ne peut plus être supprimé.

Voir aussi

Référence

new, opérateur (C++)