Am Mittwoch, dem 27. März 2002 um 11:35:29, schrieb Jens Puruckherr:
Ja, steht ja schon oben.
Ein C++-Beispiel (ungetestet):
void funktion() { int* a(new int); // irgendwas mit *a anfangen: *a = 5; ... }
C++ gibt den Speicherplatz am Ende der Funktion nicht frei, ein automatischer Garbage Collector täte das, oft aber erst irgendwann und nicht sofort am Ende der Funktion. Einfache Lösung in C++:
void funktion() { std::auto_ptr<int> a(new int); // irgendwas mit *a anfangen: *a = 5; ... }
Hier wird der Speicher genau am Ende der Funktion freigegeben. C++ kann auch mehr als nur Speicher 'garbage zu collecten':
void funktion() { boost::scoped_ptr<FILE> a(fopen("datei"), fclose); // irgendwas mit a anfangen: fprintf(a, "Hallo Welt!\n"); ... }
Hier wird fclose(a) automatisch am Ende der Funktion aufgerufen.
Torsten