In der Programmiersprache C , Zeiger store Adressinformationen für Speicherplätze in den Computer ein. Sie erlauben auch ein Programm , um den Computer für fragen Speicher (oder " allocate " Speicher) während der Ausführung. Da Zeiger mit Speicher umgehen dynamisch , sie kommen mit bestimmten Gefahren und Nachteile trotz ihrer Notwendigkeit. Speicherlecks
Wenn ein Programm Zugriffe Speicher durch die Verwendung eines Zeigers , dass Zeiger muss ständig verweisen die Speicher zugewiesen . Wenn zu irgendeinem Zeitpunkt ein Ort des zugeordneten Speichers nicht über eine entsprechende Zeiger ( wenn alle Zeiger , die sich auf dem Speicher " spitzen " anderswo ) kann , dass der Speicher nicht mehr durch das Programm zugegriffen werden. Dieser Speicher ist jetzt " verwaist. " Doch der Computer immer noch der Auffassung, dieser Speicher zugeordnet. Wie ein Programm ständig läuft , und die gleichen Zeilen Code ausgeführt Millionen Mal , ein Fehler in Speicherzuweisung durch einen Zeiger Fehler kann schnell füllen verfügbaren Speicher mit unzugänglichen Daten , was einen Speicherverlust.
null Pointers
Pointers , die nicht zu einer Adresse beziehen, im Speicher werden als " null " Zeigern. Während sie nützliche Funktionen in der Programmierung (zB bedeutet Speicherzuweisung Fehler ) dienen , tritt ein großes Problem , wenn "Dereferenzierung " einen Null-Zeiger ( Dereferenzierung eines Zeigers bedeutet , um die Daten auf dem Speicherplatz durch den Zeiger referenziert zugreifen ) . Wenn ein Programm geschrieben wird, prüft keine Sicherheit behandeln die Dereferenzierung eines NULL-Zeiger . In der Tat kann ein großes Programm nur versehentlich dereference einen Null-Zeiger , irgendwo tief in Millionen von Zeilen Code. Wenn der Code ausgeführt wird, wird jedoch eine Null-Zeiger dereferenziert verursachen ein Programm zum Absturz zu bringen .
Buffer Overflow
Ein Speicher Überlauf ( oder "buffer overflow " ) tritt auf, wenn der Speicher durch einen Zeiger zugewiesen ist nicht groß genug für die Eingabe er empfängt. Zum Beispiel, wenn ein Programm reserviert Speicher für ein Wort sieben Zeichen lang sein und empfängt als Eingabe ein Wort neun Zeichen lang ist, werden die zusätzlichen zwei Zeichen im Speicher außerhalb der sieben Zeichen Zeiger gespeichert. Die zusätzlichen zwei Zeichen überschreiben alles darin enthalten ist. Es gibt keine Möglichkeit für das Programm , zu wissen, was es in diese zusätzlichen beiden Speicherplätze . Sie könnten sensible Daten für das Programm (zB Programm -Variablen) enthalten , oder sogar für den Computer selber. Dies führt zu " Datenverlust ", wie Daten, die intakt außerhalb des zugewiesenen Speicher sollte nun gefährdet ist .