Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

16.1 Muistin käyttö

Karkeasti ottaen tavallisen ohjelman muistinkäyttö näyttäisi ajan funktiona seuraavalta:

            ^
muistin     |     
kaytto      |    +-------------------------------+ 
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            |    |                               |
            +------------------------------------------->
                ohjelman                        ohjelman
                alku                            loppu

Edellinen kuva on hieman yksinkertaistettu, koska "oikeasti" aliohjelmien lokaalit muuttujat (automaattiset muuttujat) syntyvät aliohjelmaan tultaessa ja häviävät aliohjelmasta poistuttaessa. Näin ollen käytetyn muistin yläraja vaihtelee sen mukaan mitä aliohjelmia on kesken suorituksen.

Dynaamisia muuttujia voidaan tarvittaessa luoda ja kun muistitilaa ei enää tarvita, voidaan vastaavat muuttujat vapauttaa:

            ^
muistin     |                  
kaytto      |                 +--+          
            |       +----+    |  |     +---+ 
            |       |    |    |  |   +-+   |      
            |    +--+    +----+  +---+     +-----+ 
            |    |                               |
            |    |                               |
            +-------+----+----+--+---+-+---+------------>
           ohjelman new      new   new new     
            alku     olio=null  null      null
                                           

Näin muistin maksimimäärä saattaa pysyä huomattavasti pienempänä kuin ilman dynaamisia muuttujia. Idea on siis siinä, että muistia varataan aina vain sen verran, kuin sillä hetkellä tarvitaan. Kun muistia ei enää tarvita, vapautetaan muisti.

Ajonaikana luotaviin muuttujiin tarvitaan osoitteet. Nämä osoitteet pitää sitten tallettaa johonkin. Talletus voitaisiin tehdä esimerkiksi taulukkoon tai sitten alkioista pitää muodostaa linkitetty lista.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys