23.2.3 Dynaamiset muuttujat unohtuu vapauttaa
Dynaamisia muuttujia käytettäessä tulee muistaa, että
vaikka niitä on helppo varata, pitää ne muistaa myös
vapauttaa. Esimerkiksi seuraava on väärin aliohjelmassa:
char *ali(...)
{
char *p;
...
p = tee_jono("Kissa!");
...
if ( f == NULL ) return VIRHE; /* !!! poistutaan vapauttamatta p:n tilaa !!! */
...
free(p);
return NULL;
}
Jokaisella aliohjelman kutsukerralla varataan uusi tila merkkijonolle ja
mikäli kutsuja tulee riittävästi, muisti loppuu pelkkiin
Kissoihin! Tätä voidaan C++:ssa välttää
ovelalla hajottimien käytöllä.