malloc in C: Επεξήγηση δυναμικής κατανομής μνήμης στο C

Τι είναι το malloc () στο C;

Το malloc () είναι μια λειτουργία βιβλιοθήκης που επιτρέπει στο C να κατανέμει δυναμικά τη μνήμη από το σωρό. Ο σωρός είναι μια περιοχή μνήμης όπου αποθηκεύεται κάτι.

Το malloc () είναι μέρος του stdlib.h και για να μπορέσετε να το χρησιμοποιήσετε πρέπει να το χρησιμοποιήσετε #include .

Πώς να χρησιμοποιήσετε το Malloc

Το malloc () εκχωρεί τη μνήμη ενός ζητούμενου μεγέθους και επιστρέφει ένα δείκτη στην αρχή του εκχωρημένου μπλοκ. Για να κρατήσουμε αυτόν τον επιστρεφόμενο δείκτη, πρέπει να δημιουργήσουμε μια μεταβλητή. Ο δείκτης πρέπει να είναι του ίδιου τύπου που χρησιμοποιείται στη δήλωση malloc.

Εδώ θα δημιουργήσουμε έναν δείκτη σε μια σύντομη σειρά ints

int* arrayPtr;

Σε αντίθεση με άλλες γλώσσες, ο Γ δεν γνωρίζει τον τύπο δεδομένων για τον οποίο διαθέτει μνήμη. πρέπει να ειπωθεί. Ευτυχώς, το C έχει μια λειτουργία που ονομάζεται sizeof()που μπορούμε να χρησιμοποιήσουμε.

arrayPtr = (int *)malloc(10 * sizeof(int));

Αυτή η δήλωση χρησιμοποίησε malloc για να αναιρέσει τη μνήμη για μια σειρά από 10 ακέραιους αριθμούς. Καθώς τα μεγέθη μπορούν να αλλάξουν μεταξύ υπολογιστών, είναι σημαντικό να χρησιμοποιήσετε τη συνάρτηση sizeof () για να υπολογίσετε το μέγεθος στον τρέχοντα υπολογιστή.

Κάθε μνήμη που εκχωρείται κατά την εκτέλεση του προγράμματος θα πρέπει να ελευθερωθεί πριν κλείσει το πρόγραμμα. Στη freeμνήμη, μπορούμε να χρησιμοποιήσουμε τη λειτουργία δωρεάν ()

free( arrayPtr );

Αυτή η δήλωση θα αφαιρέσει τη μνήμη που είχε εκχωρηθεί προηγουμένως. Το C δεν συνοδεύεται από garbage collectorκάποιες άλλες γλώσσες, όπως η Java. Ως αποτέλεσμα, η μνήμη που δεν ελευθερώνεται σωστά θα συνεχίσει να εκχωρείται μετά το κλείσιμο του προγράμματος.

Πριν συνεχίσετε…

Μια κριτική

  • Το Malloc χρησιμοποιείται για δυναμική κατανομή μνήμης και είναι χρήσιμο όταν δεν γνωρίζετε την ποσότητα μνήμης που απαιτείται κατά τη διάρκεια της μεταγλώττισης.
  • Η κατανομή της μνήμης επιτρέπει την ύπαρξη αντικειμένων πέρα ​​από το πεδίο του τρέχοντος μπλοκ.
  • Το C περνά από την τιμή αντί της αναφοράς. Η χρήση malloc για εκχώρηση μνήμης και μετά μετάδοση του δείκτη σε άλλη λειτουργία, είναι πιο αποτελεσματική από την αναδημιουργία της δομής.

Περισσότερες πληροφορίες για τον προγραμματισμό C:

  • Το εγχειρίδιο για αρχάριους για προγραμματισμό Γ
  • Εάν ... αλλιώς η δήλωση στο Γ εξηγείται
  • Ο Ternary χειριστής στο C εξήγησε