Säilytetyn muistin ymmärtäminen funktioissa
Funktion yhteydessä "säilyttää" viittaa siihen, että funktio ei vapauta tai vapauta käyttämänsä muistin. Sen sijaan se säilyttää muistin ja on vastuussa sen purkamisesta, kun sitä ei enää tarvita.
Toisin sanoen muistia säilyttävä toiminto ei palauta muistia kasaan tai pinoon sen jälkeen, kun se on lopettanut sen käytön. Tämä tarkoittaa, että toiminto on vastuussa muistin käyttöiän hallinnasta, mikä voi olla hyödyllistä tietyissä tilanteissa, mutta vaatii myös huolellista hallintaa muistivuotojen välttämiseksi.
Otetaan esimerkiksi toiminto, joka varaa muistia suurelle tietorakenteelle ja palauttaa sitten osoitin kyseiseen tietorakenteeseen soittajalle. Jos toiminto ei vapauta muistia, kun sitä ei enää tarvita, toiminto säilyttää muistin ja soittaja on vastuussa sen purkamisesta myöhemmin. Tämä voi johtaa muistivuotojin, jos soittaja unohtaa vapauttaa muistin.
Sitä vastoin toiminto, joka palauttaa osoittimen pinoon tai kasaan varattuun muistiin ja vapauttaa sitten muistin, kun sitä ei enää tarvita (eli ` malloc" ja "free") eivät säilytä muistia. Muisti vapautetaan takaisin kasaan tai pinoon heti, kun toiminto lopettaa sen käytön, joten soittajan ei tarvitse huolehtia muistin käyttöiän hallinnasta.



