Skip to main content

Τι είναι η υπερχείλιση ακέραιων ακέραιων;

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

31

- 1).Η αλλαγή από αρνητικό σε θετικό στο τέλος του εύρους της είναι ένα παράδειγμα υπερχείλισης ακέραιων ακέραιων.Με τον ίδιο τρόπο, ένας ακέραιος δεν μπορεί να έχει τιμή 2 31 .Αυτή η τιμή θα μεταβεί στο άλλο άκρο της εμβέλειας της και θα γίνει -2 31 Αυτή η υπερχείλιση έχει σημαντικές συνέπειες κατά τον προγραμματισμό.Ένας πίνακας μπορεί να έχει μόνο τόσους δείκτες σε αυτό, όπως επιτρέπει ο ακέραιος τύπος, και οι αρνητικοί δείκτες δεν μετράνε.Εάν ένας προγραμματιστής επιχειρεί να δημιουργήσει μια συστοιχία μεγαλύτερη από τον τύπο ακέραιου ακέραιου επιτρέπει, μπορούν να εμφανιστούν σημαντικά σφάλματα μνήμης επειδή η υπερχείλιση ακέραιων ακέραιων θα οδηγήσει σε αρνητικό δείκτη.Αυτό είναι ιδιαίτερα επικίνδυνο σε γλώσσες που δεν έχουν ρητά όρια ελέγχου για συστοιχίες, όπως C ++.Σε όλες αυτές τις περιπτώσεις, ο ακέραιος υπερχείλιση ενεργεί για να συντρίψει τις δομές μνήμης με περισσότερα δεδομένα από ό, τι αυτές οι δομές μπορούν να κρατήσουν ενδεχομένως.Αυτές οι υπερχείλιση, σε απλά προγράμματα, δεν κάνουν συχνά πολύ περισσότερο από το να προκαλέσουν ένα μη έγκυρο ανάγνωση ή άκυρο σφάλμα εγγραφής.Ωστόσο, ο χειρισμός αυτού του προβλήματος από τους χάκερς μπορεί να σχεδιάσει σφάλματα μνήμης που μπορεί να προκαλέσουν πιο σοβαρά προβλήματα. Στα πιο απλά προγράμματα, η υπερχείλιση ακέραιων ακέραιων δεν αποτελεί σημαντικό πρόβλημα.Τα όρια του ακέραιου τύπου είναι αρκετά μεγάλα ώστε το πρόβλημα της υπερχείλισης να μην τεθεί σε λειτουργία, εκτός εάν αντιμετωπιστούν πολλά δεδομένα αμέσως.Σε ορισμένες περιπτώσεις η υπερχείλιση μπορεί να μετριαστεί, όπως στην περίπτωση των μετρητών αύξησης, χρησιμοποιώντας έναν μεγαλύτερο τύπο δεδομένων με μεγαλύτερο εύρος.Ο μεγαλύτερος τύπος δεδομένων θα μπορούσε, θεωρητικά, τελικά να αντιμετωπίσει το ίδιο πρόβλημα υπερχείλισης, αλλά καθώς οι περιοχές τύπου δεδομένων γίνονται μεγαλύτερες, οι πιθανότητες να γίνει αυτό μικρότεροι.Κάθε εύρος τύπων δεδομένων ακέραιων δεδομένων είναι τουλάχιστον διπλάσια από το μέγεθος του επόμενου μικρότερου, οπότε υπάρχει αρκετό χώρο για πρόσθετα δεδομένα.