Vrij geheugen in C met vrije functie

Free Memory C With Free Function



De C-taal is efficiënt genoeg om het geheugenbeheer aan te kunnen. Het betekent dat wanneer u een reguliere variabele van een willekeurig gegevenstype in C declareert, de programmeertaal zelf verantwoordelijk is voor het vrijgeven of vrijgeven van dit geheugen zodra uw programma met succes is uitgevoerd. In het geval van dynamische geheugentoewijzing, aangezien u het geheugen handmatig toewijst, moet u het daarom ook zelf vrijgeven.

In de stdlib.h-bibliotheek is er een speciale functie voor dit doel, d.w.z. de functie free(). Vandaag zullen we de noodzaak onderzoeken om deze functie in de programmeertaal C te gebruiken. Daarna zullen we enkele voorbeelden bekijken waarin deze functie is gebruikt om handmatig geheugen vrij te maken in de programmeertaal C in Linux.







Noodzaak van het gebruik van de vrije functie in C voor het vrijmaken van systeemgeheugen:

We weten allemaal dat onze computersystemen een beperkt geheugen hebben, waardoor we er nooit oneindig veel programma's in kunnen draaien. In het geval van automatische geheugentoewijzing zorgt de computer ervoor dat het geheugen vrijkomt wanneer uw programma klaar is met uitvoeren. Wanneer we het geheugen echter handmatig van de heap toewijzen, moeten we het op de een of andere manier bevrijden.



Anders zullen we uiteindelijk geheugen tekort komen en zullen we onze programma's niet verder uitvoeren. Dit is waar de free()-functie van de stdlib.h-bibliotheek in het spel komt. We gebruiken deze functie aan het einde van een programma vlak voor de return-instructie, zodat het heapgeheugen naar het computersysteem moet worden teruggestuurd voordat het programma wordt beëindigd.



Stel dat u deze functie blijft negeren terwijl u uw C-codes schrijft die vooral gericht zijn op dynamische geheugentoewijzing. In dat geval zal er een punt komen waarop je geen toegang meer hebt tot je heap omdat het geheugen vol raakt. Daarom mag deze schijnbaar minder waardevolle functie nooit worden vergeten wanneer u de verantwoordelijkheid voor de dynamische toewijzing van geheugen op u neemt.





De algemene syntaxis van de functie free() in de programmeertaal C is als volgt:

leegtevrij (leegte*ptr)

Hier geeft het void-sleutelwoord voor de functie free() aan dat het retourtype van deze functie ongeldig is. De aanwijzer tussen de haakjes komt overeen met de geheugenlocatie waarvan de toewijzing ongedaan moet worden gemaakt. In de volgende sectie worden enkele voorbeelden beschreven waarin de functie free() is gebruikt voor het vrijgeven van het dynamische geheugen dat is verkregen in C.



Voorbeelden van het gebruik van de vrije functie in C:

De functie free() kan worden gebruikt met alle drie de geheugentoewijzingsfuncties van de stdlib.h-bibliotheek, d.w.z. malloc, calloc en realloc. Het is verplicht om deze functie te gebruiken na vermelding van de basisfunctionaliteit van uw programma, zodat u het heapgeheugen dat u dynamisch hebt toegewezen tijdens de uitvoering van het programma terug kunt overdragen aan uw computersysteem. Laten we nu een paar voorbeelden bekijken waarin de functie free() is gebruikt met de functies malloc en calloc in de programmeertaal C.

Voorbeeld # 1: De vrije functie gebruiken met calloc in C:

De C-code voor het gebruik van de functie free() met de functie calloc() is gedeeld in de onderstaande afbeelding:

Het basisdoel van deze code was om wat geheugen dynamisch toe te wijzen met behulp van de calloc()-functie. Daarvoor hebben we de grootte van het dynamisch geheugen en de waarden van dit dynamisch geheugen als input van de gebruiker genomen. Vervolgens wilden we de verkregen waarden op de terminal afdrukken. Na deze hele code hebben we onze functie free() die het toegewezen dynamische geheugen vrijgeeft vanwege de uitvoering van ons C-programma.

Een licht gewijzigde versie van dezelfde code wordt ook getoond in de onderstaande afbeelding:

Deze gewijzigde versie was alleen bedoeld om onze dynamisch toegewezen geheugenwaarden af ​​te drukken vóór de handmatige initialisatie. We weten dat de functie calloc() het hele geheugen initialiseert met nullen voordat de actualisatie plaatsvindt. Het belangrijkste punt dat hier in deze code moet worden opgemerkt, is echter dat hoewel deze code vrij compact en eenvoudig was, we toch gebruik hebben gemaakt van de functie free() zodra de gewenste functionaliteit was bereikt, alleen om het heapgeheugen vrij te geven dat we hadden verkregen als resultaat van het uitvoeren van dit C-programma.

Voorbeeld # 2: De vrije functie gebruiken met malloc in C:

De C-code voor het gebruik van de functie free() met de functie malloc() is gedeeld in de onderstaande afbeelding:

Het basisdoel van deze code was om wat geheugen dynamisch toe te wijzen met behulp van de malloc()-functie. Daarvoor hebben we de waarden van dit dynamische geheugen in een for-lus toegewezen. Vervolgens wilden we de verkregen waarden op de terminal afdrukken met behulp van een andere for-lus. Na deze hele code hebben we onze functie free() vlak voor de return-instructie die eenvoudigweg het toegewezen dynamische geheugen vrijgeeft als gevolg van de uitvoering van ons C-programma.

Conclusie:

Dit artikel benadrukte het belang van het gebruik van de functie free() in de programmeertaal C in Linux. De meeste gebruikers zijn van mening dat de toewijzingsfuncties van het bestand stdlib.h belangrijker zijn; door dit artikel door te nemen, kunt u echter duidelijk zien dat de functie free() even belangrijk is. Het zal u helpen het dynamisch verkregen geheugen vrij te geven en ervoor te zorgen dat u nooit zonder geheugen komt te zitten wanneer u in de toekomst uw programma's probeert uit te voeren.