Κανονικά, το malloc εκχωρεί μνήμη από το the heap και προσαρμόζει το μέγεθος του σωρού όπως απαιτείται, χρησιμοποιώντας το sbrk(2). Όταν εκχωρούνται μπλοκ μνήμης μεγαλύτερα από MMAP_THRESHOLD byte, η εφαρμογή glibc malloc εκχωρεί τη μνήμη ως ιδιωτική ανώνυμη αντιστοίχιση χρησιμοποιώντας mmap(2).
Πού εκχωρείται η μνήμη malloc;
Στο C, η συνάρτηση βιβλιοθήκης malloc χρησιμοποιείται για την εκχώρηση ενός μπλοκ μνήμης στο the heap Το πρόγραμμα έχει πρόσβαση σε αυτό το μπλοκ μνήμης μέσω ενός δείκτη που επιστρέφει το malloc. Όταν η μνήμη δεν χρειάζεται πλέον, ο δείκτης μεταβιβάζεται στην ελεύθερη, ο οποίος εκχωρεί τη μνήμη έτσι ώστε να μπορεί να χρησιμοποιηθεί για άλλους σκοπούς.
Σε ποιο μέρος της μνήμης το malloc και το calloc εκχωρούν μνήμη;
Το όνομα malloc και calloc είναι συναρτήσεις βιβλιοθήκης που εκχωρούν μνήμη δυναμικά. Σημαίνει ότι η μνήμη εκχωρείται κατά τη διάρκεια του χρόνου εκτέλεσης (εκτέλεση του προγράμματος) από το το τμήμα σωρού.
Πού εκχωρείται η μνήμη;
The Heap. Το Heap είναι εκείνο το τμήμα της μνήμης του υπολογιστή, που εκχωρείται σε μια εφαρμογή που εκτελείται, όπου η μνήμη μπορεί να εκχωρηθεί για μεταβλητές, στιγμιότυπα κλάσεων κ.λπ. Από το σωρό ενός προγράμματος το λειτουργικό σύστημα εκχωρεί μνήμη για δυναμική χρήση.
Πού είναι αποθηκευμένη η στατικά εκχωρημένη μνήμη;
Όταν το πρόγραμμα (εκτελέσιμο ή βιβλιοθήκη) φορτώνεται στη μνήμη, οι στατικές μεταβλητές αποθηκεύονται στο το τμήμα δεδομένων του χώρου διευθύνσεων του προγράμματος (εάν έχει αρχικοποιηθεί) ή στο τμήμα BSS (αν δεν έχει αρχικοποιηθεί) και αποθηκεύονται σε αντίστοιχες ενότητες αρχείων αντικειμένων πριν από τη φόρτωση.