Χρειάζεται malloc στην C++;
Χρειάζεται malloc στην C++;

Βίντεο: Χρειάζεται malloc στην C++;

Βίντεο: Χρειάζεται malloc στην C++;
Βίντεο: Πώς μπορώ να δεσμεύω δυναμικά μνήμη με την C; 2024, Ενδέχεται
Anonim

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

Επίσης, χρειάζεται να κάνετε malloc στην C++;

Η διαφορά είναι απλή: malloc εκχωρεί μνήμη, ενώ το new εκχωρεί μνήμη ΚΑΙ καλεί τον κατασκευαστή του αντικειμένου εσείς εκχωρεί μνήμη για. Έτσι, εκτός αν εσείς περιορίζονται στο C, θα έπρεπε ποτέ μην χρησιμοποιείτε malloc , ειδικά όταν αντιμετωπίζουμε C++ αντικείμενα.

Μπορεί επίσης να ρωτήσει κανείς, ποιο είναι το νόημα του malloc; Στο C, η λειτουργία βιβλιοθήκης malloc χρησιμοποιείται για την εκχώρηση ενός μπλοκ μνήμης στο σωρό. Το πρόγραμμα έχει πρόσβαση σε αυτό το μπλοκ μνήμης μέσω ενός δείκτη που malloc επιστρέφει. Όταν η μνήμη δεν χρειάζεται πλέον, ο δείκτης μεταβιβάζεται στην ελεύθερη θέση που εκχωρεί τη μνήμη έτσι ώστε να μπορεί να χρησιμοποιηθεί για άλλους σκοπούς.

Με αυτόν τον τρόπο, υπάρχει malloc στη C++;

Το malloc () λειτουργία σε C++ κατανέμει ένα μπλοκ μη αρχικοποιημένης μνήμης και επιστροφές ένα κενός δείκτης σε ο πρώτο byte του ο εκχωρήθηκε μπλοκ μνήμης εάν ο η κατανομή είναι επιτυχής. Αν ο το μέγεθος είναι μηδέν, ο η επιστρεφόμενη τιμή εξαρτάται από ο υλοποίηση του ο βιβλιοθήκη. Το μπορεί και όχι ένα μηδενικός δείκτης.

Πώς μπορείτε να κάνετε malloc μια δομή;

Για αυτό που θέλεις χρειάζεσαι δύο malloc () s. struct Διάνυσμα *y = malloc (μέγεθος *y); /* Σημειώστε τον δείκτη */ y->x = calloc(10, sizeof *y->x); Στην πρώτη γραμμή, εκχωρείτε μνήμη για ένα αντικείμενο Vector. malloc () επιστρέφει έναν δείκτη στην εκχωρημένη μνήμη, επομένως το y πρέπει να είναι δείκτης Vector.