Olio-ohjelmointi
C++ Muistinhallinta Visualisointi

RUN - Ajaa sovelluksen ja näyttää miten muuttujat ja oliot luodaan pino- ja kekomuistiin ohjelman suorituksen aikana.

LOPETA - Demoaa sovelluksen päättymistä ja näyttää miten muisti vapautetaan. Pinomuisti vapautuu automaattisesti, mutta kekomuisti jää vuotamaan jos delete-operaattoria ei ole käytetty.

Tietokoneen RAM-muisti

RAM (Random Access Memory) eli keskusmuisti on tietokoneen nopea, väliaikainen muisti, johon tallennetaan ohjelmien suorituksen aikana tarvittavaa dataa. RAM-muisti jaetaan eri alueisiin:

Pinomuisti (Stack)

  • Automaattinen muistinhallinta: Muuttujat ja oliot luodaan ja tuhotaan automaattisesti
  • LIFO-periaate: Last In, First Out - viimeisenä lisätty poistetaan ensimmäisenä
  • Nopea: Muistin varaaminen ja vapautus on erittäin nopeaa
  • Rajoitettu koko: Pino on kooltaan rajallinen (tyypillisesti muutama megatavu)
  • Käyttö C++:ssa: Paikalliset muuttujat ja oliot ilman new-avainsanaa

Kekomuisti (Heap)

  • Manuaalinen muistinhallinta: Ohjelmoijan vastuulla varata (new) ja vapauttaa (delete) muisti
  • Suuri koko: Paljon suurempi kuin pino (rajoituksena käytännössä vain RAM:n kokonaiskoko)
  • Hitaampi: Muistin varaus ja vapautus on hitaampaa kuin pinossa
  • Joustava: Muistia voi varata dynaamisesti ohjelman suorituksen aikana
  • Käyttö C++:ssa: Dynaamisesti varatut oliot new-operaattorilla
  • Vaara: Muistivuodot (memory leaks) jos muistia ei vapauteta!

Hyvät käytännöt C++:ssa

  • Suosi pinomuistia kun mahdollista - se on turvallisempaa ja nopeampaa
  • Jos käytät new-operaattoria, muista aina vapauttaa muisti delete-operaattorilla
  • Aseta osoitin arvoon nullptr vapautuksen jälkeen välttääksesi roikkuvat osoittimet
  • Käytä modernissa C++:ssa älykkäitä osoittimia (std::unique_ptr, std::shared_ptr) jotka hoitavat muistinhallinnan automaattisesti



Toggle Menu