Kirjoittaja Aihe: c++ deletointi, milloin ja miten deletoitu objekti oikeasti vapautuu  (Luettu 2851 kertaa)

teele

  • Käyttäjä
  • Viestejä: 849
    • Profiili

Jos c++:ssa tehdään paljon objecteja listaan tai mappiin ja ne tuhotaan, niin milloin ja missä vaiheessa ne oikeasti vapautuvat käyttikselle eivätkä enää kuulu ohjelman muistitilaan.

Luultavasti on niin, että yksi merkkijonoobjecti listassa tai mapissa ei vapautuessaan näy käyttiksessä, mutta milloin iso määrä vapautettuja stringejä näkyisi. Millä tavalla c++ oikeasti varaa muistia ohjelmalle, ehkä jonkilaisina muistilohkoina tms?

Onnistuisiko käytännössä ohjelman muistinkäytön seuraaminen system monitorilla vai onko olemassa joku sopiva käyttiskomento ohjelman kulloinkin viemän muistimäärän seuraamiseksi.


_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili

teele

  • Käyttäjä
  • Viestejä: 849
    • Profiili
Kiitos linkistä, pitääpä käydä tutkimassa  :)

Siitä tiedosta voi olla apua, jos ei muuten selviä, miten ja milloin deletoidut oliot vapauttavat viemänsä tilan järjetelmälle. Muistinkulutuksen seuraamisen avulla voisi ehkä arvailla, milloin olioiden tila vapautuu.

Mutta parempi tietysti olisi, jos deletoitujen olioiden viemän tilan vapautumisesta  löytyisi suoraan tietoa. Koneessa on aika vähän muistia ja olisi toive, että oman ohjelman voisi jättää turvallisesti ajoon eikä se veisi turhaan muistitilaa ainakaan deletoitujen olioiden osalta.


_Pete_

  • Käyttäjä
  • Viestejä: 1845
  • Fufufuuffuuu
    • Profiili
Epäiletkö siis että koodissa on vikaa sillä tapaa että kaikkia varattuja olioita ei vapauteta vai sitä että kaikki vapautetaan koodissa mutta vapautus ei silti toimi?

teele

  • Käyttäjä
  • Viestejä: 849
    • Profiili

Vielä ei ole mitään koodia, mietinnässä on, millaista koodia pitäisi kokeilla. Netistä löytyi asiaan liittyviä linkkejä haulla:   c++ linux memory pool free

Luultavasti järjestelmältä varataan muistia lohkoina ja vaikka yksittäisiä olioita poistetaan, se ei suoraan heti näy järjestelmälle.

Jere Sumell

  • Käyttäjä
  • Viestejä: 741
  • Talous, Hallinto ja Markkinointi (AMK, 2017),B.B.A
    • Profiili
    • Tietokone-blogi
Itse olen pääasiassa elämäni aikana ohjelmoinut "kehittyneimmillä" kielillä, mitä 2005/2006 vuodesta lähtien olen ottanut osaa erilaisiin ohjlmointikursseihin, niin C++ ei ole ollut opetuskielenä trendaava millään kurssilla. En kiistele sen tehokkuudesta, vaikka pidän sitä moniperimis-järjestelmää sekavana ja monimutkaisena, mitä olen tutustunut kieleen.

Hakukoneella, jos katsoo "c++ garbage collector library", niin avoimen koodin erilaisia GC:tä on saatavilla, jos se helpottaa ohjelmoijan työtä, niin mikä estää sitten käyttämästä avoimesti saatavilla olevaa kirjastoa.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)