Malloc () Λειτουργία στη βιβλιοθήκη C με ΠΑΡΑΔΕΙΓΜΑ

Πίνακας περιεχομένων:

Anonim

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

Η συνάρτηση malloc () σημαίνει κατανομή μνήμης. Είναι μια συνάρτηση που χρησιμοποιείται για να κατανέμει δυναμικά ένα μπλοκ μνήμης. Διατηρεί χώρο μνήμης καθορισμένου μεγέθους και επιστρέφει το μηδενικό δείκτη που δείχνει στη θέση μνήμης. Ο δείκτης που επιστρέφεται είναι συνήθως άκυρος τύπου. Αυτό σημαίνει ότι μπορούμε να αντιστοιχίσουμε τη λειτουργία malloc σε οποιονδήποτε δείκτη.

Σύνταξη

ptr = (cast_type *) malloc (byte_size);

Εδώ,

  • Το ptr είναι δείκτης του cast_type.
  • Η συνάρτηση malloc επιστρέφει ένα δείκτη στην εκχωρημένη μνήμη του byte_size.
Example: ptr = (int *) malloc (50)

Όταν εκτελεστεί με επιτυχία αυτή η δήλωση, δεσμεύεται χώρος μνήμης 50 byte. Η διεύθυνση του πρώτου byte του δεσμευμένου χώρου εκχωρείται στο δείκτη ptr του τύπου int.

Εξετάστε ένα άλλο παράδειγμα εφαρμογής malloc:

#include int main(){int *ptr;ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */if (ptr != NULL) {*(ptr + 5) = 480; /* assign 480 to sixth integer */printf("Value of the 6th integer is %d",*(ptr + 5));}}

Παραγωγή:

Value of the 6th integer is 480

  1. Παρατηρήστε ότι χρησιμοποιήθηκε το sizeof (* ptr) αντί για το sizeof (int) για να γίνει ο κώδικας πιο ισχυρός όταν η δήλωση * ptr τυποποιείται σε διαφορετικό τύπο δεδομένων αργότερα.
  2. Η κατανομή ενδέχεται να αποτύχει εάν η μνήμη δεν είναι επαρκής. Σε αυτήν την περίπτωση, επιστρέφει ένα δείκτη NULL. Επομένως, πρέπει να συμπεριλάβετε κωδικό για να ελέγξετε έναν δείκτη NULL.
  3. Λάβετε υπόψη ότι η εκχωρημένη μνήμη είναι συνεχόμενη και μπορεί να αντιμετωπιστεί ως πίνακας. Μπορούμε να χρησιμοποιήσουμε αριθμητική δείκτη για πρόσβαση στα στοιχεία του πίνακα και όχι με αγκύλες []. Σας συμβουλεύουμε να χρησιμοποιήσετε το + για να αναφερθείτε στα στοιχεία του πίνακα, επειδή με την αύξηση ++ ή + = αλλάζει τη διεύθυνση που έχει αποθηκευτεί από το δείκτη.

Η λειτουργία Malloc μπορεί επίσης να χρησιμοποιηθεί με τον τύπο δεδομένων χαρακτήρων καθώς και περίπλοκους τύπους δεδομένων όπως δομές.