Lebensdauer von mit "new" zugeordneten Objekten
Objekte, die mit dem new-Operator zugeordnet werden, werden nicht zerstört, wenn der Gültigkeitsbereich, in dem sie definiert sind, beendet wird. Da der new-Operator einen Zeiger auf Objekte zurückgibt, die er zuordnet, muss das Programm einen Zeiger mit passendem Gültigkeitsbereich definieren, um auf diese Objekte zuzugreifen. Beispiel:
// 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.
}
Sobald der Zeiger AnotherArray den Gültigkeitsbereich in dem Beispiel verlässt, kann das Objekt nicht mehr gelöscht werden.