Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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ä.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys