Όταν ένα πρόγραμμα ζητά μνήμης μέσα από τη χρήση ενός δείκτη , που πρέπει συνεχώς δείκτης αναφοράς η μνήμη που εκχωρείται . Εάν σε οποιαδήποτε στιγμή μια θέση της μνήμης που διατίθενται δεν έχουν αντίστοιχο δείκτη ( αν όλοι οι δείκτες που αναφέρονται στη μνήμη είναι " τόνισε " αλλού ) , ότι η μνήμη δεν μπορεί πλέον να έχει πρόσβαση από το πρόγραμμα . Η μνήμη αυτή τώρα "ορφανή ". Ωστόσο , ο υπολογιστής εξακολουθεί να θεωρεί ότι η μνήμη που εκχωρείται . Ως ένα πρόγραμμα τρέχει συνεχώς , και οι ίδιες γραμμές κώδικα που εκτελούνται εκατομμύρια φορές , ένα σφάλμα στην εκχώρηση μνήμης από ένα δείκτη λάθος μπορεί να γεμίσει γρήγορα τη διαθέσιμη μνήμη με απρόσιτα τα δεδομένα , προκαλώντας διαρροή μνήμης .
Εικόνων null δείκτες
Η
δείκτες που δεν αναφέρονται σε μια διεύθυνση στη μνήμη ονομάζονται " null " δείκτες . Παρόλο που εξυπηρετούν χρήσιμες λειτουργίες στον προγραμματισμό ( όπως σημαίνει σφάλματα κατανομή μνήμης ) , ένα σημαντικό πρόβλημα εμφανίζεται όταν « dereferencing " ένα δείκτη null ( dereferencing ένα δείκτη σημαίνει να έχουν πρόσβαση στα δεδομένα στη θέση μνήμης που αναφέρεται από το δείκτη ) . Όταν ένα πρόγραμμα είναι γραμμένο , δεν υπάρχουν έλεγχοι ασφαλείας χειριστεί την αποαναφοράς ενός δείκτη null . Στην πραγματικότητα , ένα μεγάλο πρόγραμμα μπορεί μόνο τυχαία dereference ένα δείκτη null , κάπου βαθιά σε εκατομμύρια γραμμές κώδικα . Όταν εκτελείται ο κώδικας , ωστόσο, μια αναχθούν null δείκτης θα προκαλέσει ένα πρόγραμμα για την συντριβή .
Η Buffer Overflow
Η
Μια υπέρβαση της μνήμης ( ή « buffer υπερχείλιση " ) εμφανίζεται όταν η μνήμη έχει χορηγηθεί από ένα δείκτη δεν είναι αρκετά μεγάλο για την είσοδο που δέχεται . Για παράδειγμα, εάν ένα πρόγραμμα διαθέτει μνήμη για μια λέξη μακρύ επτά χαρακτήρες και λαμβάνει ως είσοδο μια λέξη εννέα χαρακτήρες , οι επιπλέον δύο χαρακτήρες είναι αποθηκευμένα στη μνήμη εκτός της μνήμης δείκτη επτά χαρακτήρων . Οι δύο επιπλέον χαρακτήρες αντικαταστήσετε κάτι που περιέχονται σε αυτήν . Δεν υπάρχει κανένας τρόπος για το πρόγραμμα να γνωρίζει τι υπάρχει σε αυτές τις δύο επιπλέον θέσεις μνήμης . Θα μπορούσαν να περιέχουν ευαίσθητα δεδομένα για το πρόγραμμα ( όπως οι μεταβλητές του προγράμματος ) , ή ακόμα και για τον ίδιο τον υπολογιστή . Αυτό οδηγεί σε « καταστροφή δεδομένων », όπως τα δεδομένα που θα έπρεπε να είναι άθικτη έξω από την μνήμη που έχει εκχωρηθεί είναι τώρα σε κίνδυνο .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα