Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Τα μειονεκτήματα της Δείκτες σε C

Στη γλώσσα προγραμματισμού C , η διεύθυνση δείκτες αποθηκεύουν πληροφορίες για τις θέσεις μνήμης του υπολογιστή . Μπορούν επίσης να επιτρέπουν σε ένα πρόγραμμα για να επιτρέψει ζητήσει από τον υπολογιστή για τη μνήμη ( ή " διαθέσει " μνήμη) κατά την εκτέλεση . Επειδή οι δείκτες ασχολούνται με τη μνήμη δυναμικά , έρχονται με ορισμένους κινδύνους και τα μειονεκτήματα , παρά την αναγκαιότητά τους. Διαρροές μνήμης
Η

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

δείκτες που δεν αναφέρονται σε μια διεύθυνση στη μνήμη ονομάζονται " null " δείκτες . Παρόλο που εξυπηρετούν χρήσιμες λειτουργίες στον προγραμματισμό ( όπως σημαίνει σφάλματα κατανομή μνήμης ) , ένα σημαντικό πρόβλημα εμφανίζεται όταν « dereferencing " ένα δείκτη null ( dereferencing ένα δείκτη σημαίνει να έχουν πρόσβαση στα δεδομένα στη θέση μνήμης που αναφέρεται από το δείκτη ) . Όταν ένα πρόγραμμα είναι γραμμένο , δεν υπάρχουν έλεγχοι ασφαλείας χειριστεί την αποαναφοράς ενός δείκτη null . Στην πραγματικότητα , ένα μεγάλο πρόγραμμα μπορεί μόνο τυχαία dereference ένα δείκτη null , κάπου βαθιά σε εκατομμύρια γραμμές κώδικα . Όταν εκτελείται ο κώδικας , ωστόσο, μια αναχθούν null δείκτης θα προκαλέσει ένα πρόγραμμα για την συντριβή .

Η Buffer Overflow
Η

Μια υπέρβαση της μνήμης ( ή « buffer υπερχείλιση " ) εμφανίζεται όταν η μνήμη έχει χορηγηθεί από ένα δείκτη δεν είναι αρκετά μεγάλο για την είσοδο που δέχεται . Για παράδειγμα, εάν ένα πρόγραμμα διαθέτει μνήμη για μια λέξη μακρύ επτά χαρακτήρες και λαμβάνει ως είσοδο μια λέξη εννέα χαρακτήρες , οι επιπλέον δύο χαρακτήρες είναι αποθηκευμένα στη μνήμη εκτός της μνήμης δείκτη επτά χαρακτήρων . Οι δύο επιπλέον χαρακτήρες αντικαταστήσετε κάτι που περιέχονται σε αυτήν . Δεν υπάρχει κανένας τρόπος για το πρόγραμμα να γνωρίζει τι υπάρχει σε αυτές τις δύο επιπλέον θέσεις μνήμης . Θα μπορούσαν να περιέχουν ευαίσθητα δεδομένα για το πρόγραμμα ( όπως οι μεταβλητές του προγράμματος ) , ή ακόμα και για τον ίδιο τον υπολογιστή . Αυτό οδηγεί σε « καταστροφή δεδομένων », όπως τα δεδομένα που θα έπρεπε να είναι άθικτη έξω από την μνήμη που έχει εκχωρηθεί είναι τώρα σε κίνδυνο .
Η
εικόνων

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

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