Avatar billede webage Nybegynder
09. september 2009 - 11:10 Der er 4 kommentarer

Free

Hej Eksperten,

Jeg har fået stillet en opgave som omhandler håndtering af hukommelsen, og har i den forbindelse brug for at vide følgende.

Efter et kald som fx kunne se således ud:

void* palloc = malloc(64);

Hvordan frigiver jeg så den allokerede hukommelse? Jeg har prøvet med:

free(palloc)

Men det virker ikke (hvilket jeg egentlig heller ikke havde regnet med, da void pointeren ikke siger noget som størrelsen af den struktur den peger på, men det viser da min intention :)).
Avatar billede bitmatic Nybegynder
09. september 2009 - 11:30 #1
Det skal virke....

free(palloc) frigiver palloc, og fortæller memory manageren at den kan allokere den hukommelse som palloc peger på igen.

Du skal dog være opmærksom på, at free(palloc) ikke nulstiller hverken palloc eller hukommelsen palloc peger på, så det kan faktisk godt virke som om, du kan blive ved med at bruge palloc som normalt efter at den er blevet frigivet.
Avatar billede ksoren Nybegynder
09. september 2009 - 12:04 #2
Detaljerne holder malloc styr på internt. Så det er ikke noget problem.
Avatar billede arne_v Ekspert
09. september 2009 - 14:10 #3
free frigiver memory allokeret med malloc.

Men typisk vil den frigive memory til brug for senere malloc kald ikke frigive memory til operativ systemet.
Avatar billede arne_v Ekspert
14. oktober 2009 - 02:24 #4
Tid at få afsluttet her?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester