υπολογιστή

* Γνώση Υπολογιστών >> υπολογιστή >> Λογισμικό

Πλεονεκτήματα και μειονεκτήματα των Pointers

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

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

Ασφάλεια

Άμεση πρόσβαση στη μνήμη σημαίνει ότι μπορείτε να κάνετε πράγματα που ίσως δεν πρέπει. Ανάλογα με τη γλώσσα, τον μεταγλωττιστή και την πλατφόρμα του υπολογιστή, θα μπορούσατε να χρησιμοποιήσετε ακούσια (ή σκόπιμα) μνήμη που δεν είναι δική σας για πρόσβαση. Ως αποτέλεσμα, θα μπορούσατε να αντικαταστήσετε την κρίσιμη μνήμη, να τροποποιήσετε τον κώδικα μιας τρέχουσας εφαρμογής ή να αναγκάσετε την εφαρμογή ή την άλλη εφαρμογή να συμπεριφερθεί ή να τερματιστεί απροσδόκητα. Ένα συνηθισμένο σφάλμα είναι να τρέξουμε πέρα ​​από το τέλος ενός πίνακα, έχοντας πρόσβαση στη μνήμη πέρα ​​από το τέλος του χώρου που έχει διατεθεί για αυτόν τον πίνακα.

Διαχείριση μνήμης

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

Παράμετροι λειτουργίας

Οι λειτουργίες μπορούν να επιστρέψουν μόνο μία τιμή, αλλά μπορούν να πάρουν πολλές παραμέτρους. Μεταβιβάζοντας δείκτες σε μεταβλητές ως παράμετροι, μπορεί να χρησιμοποιηθεί μια συνάρτηση για τον καθορισμό των τιμών αυτών των μεταβλητών και οι νέες τιμές θα διατηρηθούν μετά την επιστροφή της συνάρτησης. Η δυνατότητα ρύθμισης της τιμής πολλών μεταβλητών ταυτόχρονα με μια κλήση μίας λειτουργίας είναι καθαρή και αποδοτική. Ωστόσο, μπορεί να είναι λίγο συγκεχυμένη η ανάγνωση επειδή δεν μπορείτε να διαπιστώσετε αν οι μεταβλητές που έχουν μεταβιβαστεί θα τροποποιηθούν ή όχι απλά κοιτάζοντας την κλήση λειτουργίας. Θα πρέπει να εξετάσετε την τεκμηρίωση λειτουργίας για να μάθετε πώς συμπεριφέρεται η συνάρτηση.

Λειτουργίες δείκτες

Οι δείκτες δεν είναι μόνο για αντικείμενα στη μνήμη. μπορούν επίσης να χρησιμοποιηθούν για λειτουργίες, επιτρέποντας έτσι τη μετάβαση μιας συνάρτησης σε μια άλλη λειτουργία. Ένας δείκτης λειτουργίας μπορεί να έχει τη διεύθυνση μίας από τις επιλογές των λειτουργιών έτσι ώστε ο δείκτης να λειτουργεί σαν ένα ψευδώνυμο. Οι αντικειμενοστραφείς γλώσσες προγραμματισμού έχουν εξαλείψει την ανάγκη για δείκτες λειτουργίας με κληρονομικότητα και πολυμορφισμό.

Σύμπτωμα δείκτη

Οι δείκτες είναι ένα συγκεχυμένο θέμα για πολλούς προγραμματιστές, ιδιαίτερα εκείνους που έχουν εμπειρία στη χρήση γλωσσών που δεν διαθέτουν δείκτες και άμεσες πρόσβαση μνήμης. Ωστόσο, η επιμονή οδηγεί γρήγορα στην κυριαρχία των δεικτών. Οι δείκτες συνοδεύονται συχνά από σκοτεινή σύνταξη. Συνεπείς συμβάσεις ονομαστικής μεταβλητής μπορούν να βοηθήσουν τον κώδικα σας να είναι πιο αναγνώσιμος. Για παράδειγμα, οι συνηθισμένες συμβάσεις ονοματοδοσίας περιλαμβάνουν τη χρήση "p_" ή "ptr_" ως πρόθεμα για τα ονόματα μεταβλητών δείκτη.

Συμβουλές

Χρησιμοποιείτε πάντα τις λειτουργίες κατανομής που παρέχονται από τη γλώσσα για τη μνήμη κατανομής και ελέγξτε βεβαιωθείτε ότι η μνήμη διατέθηκε πριν τη χρησιμοποιήσετε. Να είστε προσεκτικοί με τη διαχείριση μνήμης και να ελευθερώσετε τη μνήμη όταν δεν χρειάζεται πλέον. Εάν επανατοποθετήσετε έναν δείκτη σε μια νέα διεύθυνση μνήμης, βεβαιωθείτε ότι η παλιά μνήμη είναι ελευθερωμένη ή έχει αντιστοιχιστεί σε διαφορετικό δείκτη. Βεβαιωθείτε ότι οι δείκτες που έχουν δημιουργηθεί σε λειτουργίες έχουν εκχωρηθεί ιδιοκτησία στο γονικό πεδίο ή ότι η μνήμη έχει εκχωρηθεί πριν από την έξοδο από τη λειτουργία.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα