Is toegewezen geheugen vrij?

Is toegewezen geheugen vrij?
Is toegewezen geheugen vrij?
Anonim

Het geheugen dat is toegewezen met behulp van de functies malloc en calloc wordt niet vanzelf ongedaan gemaakt. Daarom wordt de free methode gebruikt, telkens wanneer de dynamische geheugentoewijzing plaatsvindt. Het helpt verspilling van geheugen te verminderen door het vrij te maken.

Hoe wordt het toegewezen geheugen vrijgemaakt?

In C wordt de bibliotheekfunctie malloc gebruikt om een geheugenblok op de heap toe te wijzen. Het programma benadert dit geheugenblok via een aanwijzer die malloc retourneert. Wanneer het geheugen niet langer nodig is, wordt de aanwijzer doorgegeven aan free die de toewijzing van het geheugen ongedaan maakt, zodat het voor andere doeleinden kan worden gebruikt.

Wat gebeurt er als je toegewezen geheugen niet vrijmaakt?

In de meeste gevallen is het zinloos om geheugen net voor het afsluiten van het programma te verwijderen. Het besturingssysteem zal het hoe dan ook terugvorderen. Free zal de dode objecten aanraken en erin bladeren; het besturingssysteem niet. Gevolg: Wees voorzichtig met "lekdetectoren" die toewijzingen tellen.

Is het toewijzen van geheugen duur?

Een naïeve meting van de kosten van het toewijzen en vrijmaken van grote geheugenblokken zou tot de conclusie komen dat het ongeveer 7,5 μs kost voor elk toegewezen/vrij paar. Er zijn echter drie afzonderlijke kosten per MB voor grote toewijzingen.

Kan de toegewezen geheugenruimte opnieuw worden toegewezen, zo ja, hoe?

De functie realloc wijst het door old_blk gespecificeerde geheugenblok toe, wijst het opnieuw toe of maakt het vrij op basis van de volgende regels: Als old_blk NULL is, een nieuw geheugenblok van grootte bytes istoegewezen. Als de grootte nul is, wordt de vrije functie aangeroepen om het geheugen vrij te geven waarnaar wordt verwezen door old_blk.

Aanbevolen: