Compartir a través de


Duración de objetos asignados con new

Los objetos asignados con el operador new no se destruyen cuando se sale del ámbito en el que se definen. Como el operador new devuelve un puntero a los objetos que asigna, el programa debe definir un puntero con el ámbito adecuado para tener acceso a esos objetos. Por ejemplo:

// 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.
}

Una vez que el puntero AnotherArray sale del ámbito en el ejemplo, el objeto ya no se puede eliminar.

Vea también

Referencia

new (Operador) (C++)