Gå til innhold

Spm om pekere og minnelekasje ved terminering...


Anbefalte innlegg

Skrevet

Hei,

Jeg lurer på om hva som skjer med pekere når et program terminerer/avslutter. Vil det da oppstå en minnelekasje hvis programmet uventet avslutter? Hvordan kan jeg isåfall kalle på destruktørene mine når dette skjer?

Videoannonse
Annonse
Skrevet

Destruktøren til et objekt blir kalt automatisk når delete kalles (dersom objektet ble allokert dynamisk) eller når scopet ("leveområdet") dets er ferdig (f.eks. når en funksjon slutter).

Skrevet

Når et program avsluttes plutselig så dealokerer OSet (alle jeg har hørt om) minne ditt så det blir ingen minnelekasjer.

 

For å stoppe nedstengingen av programmet under en plutselig slutt så burde du lese om exeption.

Skrevet

Som Giddion sier, så fikser OS-et det, så det er ikke der problemet ligger.

Hvis du har en minnelekasje, kan dette føre til at programmet til slutt vil gå kjempetregt, og i verste fall sakker ned hele systemet ditt (bruker mer RAM en det som er tilgjengelig på systemet, og mye må skrives til pagefile/swapdisk)

Men når programmet avsluttes, så frigjør operativsystemet alle ressurser som programmet har tatt i bruk (RAM, Handles etc.)

Dette skjedde ikke nødvendigvis i DOS (derfor hendte det at man måtte restarte PC-en hvis en program klikket, og lydkortet f.eks. gikk amok)

Selvom dette er ubekreftet, så har jeg hørt at windows 95/98 ikke hadde en ordentlig fungerende garbage collector.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...