Durata di oggetti allocati con new
Gli oggetti allocati mediante l'operatore new non vengono eliminati quando non ci si trova nell'ambito in cui sono definiti. Poiché l'operatore new restituisce un puntatore agli oggetti che alloca, il programma deve definire un puntatore con ambito appropriato per accedere a tali oggetti. Ad esempio:
// 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 volta che il puntatore AnotherArray esce dall'ambito (nell'esempio), l'oggetto non può più essere eliminato.