Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

16.2.5 Ole varovainen reallocin kanssa

reallocin kanssa on kuitenkin oltava erittäin huolellinen, koska kaikki allokoitavassa osassa olevat kentät saattavat siirtyä uuteen paikkaan. Mikäli meillä on osoittimia allokoitavan alueen sisälle, on niillä reallocin jälkeen täysin väärät arvot!

Siis alkuvaiheessa realloc kannattaa ehkä unohtaa, mutta periaatteessa sillä voitaisiin korjata väärää kokomäärittelyä. Ja voidaanhan se aina lisätä jälkeenpäin kuten edellisessä esimerkissä!

C++:ssa ei ole vastaavaa funktiota. Tämä olisikin osaltaan hankala toteuttaa, koska luomisessa pitää kutsua olion (olioiden) muodostajaa ja vastaavasti poistamisessa hajottajaa. realloc- tilanteessa voidaan koko muistialue joutua siirtämään toiseen kohti muistia ja kloonaamaan sitten sisällöt sinne. Olioiden tapauksessa tämä kloonaaminen ja sitten vanhojen poisto ei kuitenkaan ole aina yksikäsitteistä ja näin kielen tekijät ovat päätyneet siihen, että reallocia vastaavan toiminnon tekeminen jätetään ohjelmoijalle itselleen.

Tehtävä 16.149 Jäsenistön realloc?

Onko kerhon jäsenistön kanssa em. realloc ongelmia? Muuta silti jäsenistön muistin varaus C++:n new-operaattoria käyttäväksi ja hoida lisätilan varaus itse.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys