Η μνήμη που εκχωρείται με τις συναρτήσεις malloc και calloc δεν καταργείται από μόνη της. Ως εκ τούτου, χρησιμοποιείται η ελεύθερη μέθοδος, κάθε φορά που πραγματοποιείται η δυναμική εκχώρηση μνήμης. Βοηθά στη μείωση της σπατάλης της μνήμης απελευθερώνοντάς την.
Πώς γίνεται δωρεάν η εκχωρημένη μνήμη;
Στο C, η συνάρτηση βιβλιοθήκης malloc χρησιμοποιείται για την εκχώρηση ενός μπλοκ μνήμης στο σωρό. Το πρόγραμμα έχει πρόσβαση σε αυτό το μπλοκ μνήμης μέσω ενός δείκτη που επιστρέφει το malloc. Όταν η μνήμη δεν χρειάζεται πλέον, ο δείκτης μεταβιβάζεται στην ελεύθερη που εκχωρεί τη μνήμη έτσι ώστε να μπορεί να χρησιμοποιηθεί για άλλους σκοπούς.
Τι θα συμβεί εάν δεν ελευθερώσετε την εκχωρημένη μνήμη;
Στις περισσότερες περιπτώσεις, η κατανομή της memory ακριβώς πριν την έξοδο από το πρόγραμμα είναι άσκοπη. Το λειτουργικό σύστημα θα το ανακτήσει ούτως ή άλλως. Το Δωρεάν θα αγγίξει και θα σελιδοποιήσει τα νεκρά αντικείμενα. το λειτουργικό σύστημα δεν θα το κάνει. Συνέπεια: Να είστε προσεκτικοί με τους "ανιχνευτές διαρροής" που μετρούν τις κατανομές.
Είναι ακριβή η κατανομή μνήμης;
Μια απλή μέτρηση του κόστους εκχώρησης και απελευθέρωσης μεγάλων μπλοκ μνήμης θα συμπεράνει ότι κοστίζει περίπου 7,5 μs για κάθε κατανομή/δωρεάν ζεύγος. Ωστόσο, υπάρχουν τρία ξεχωριστά κόστη ανά MB για μεγάλες κατανομές.
Μπορεί να ανακατανεμηθεί ο εκχωρημένος χώρος μνήμης, εάν ναι, πώς;
Η συνάρτηση realloc εκχωρεί, ανακατανέμει ή ελευθερώνει το μπλοκ μνήμης που καθορίζεται από το old_blk με βάση τους ακόλουθους κανόνες: Εάν το old_blk είναι NULL, ένα νέο μπλοκ μνήμης μεγέθους byte είναικατανέμεται. Εάν το μέγεθος είναι μηδέν, η ελεύθερη συνάρτηση καλείται να απελευθερώσει τη μνήμη που δείχνει το old_blk.