Speicherverletzung - Storage violation

Bei der Berechnung eine Speicherverletzung ist ein Hardware- oder Software - Fehler dar , der auftritt , wenn Task versucht eine Fläche von dem Zugriff auf Computerspeichern , die sie nicht zugreifen dürfen.

Arten von Speicherverletzungen

Eine Speicherverletzung kann beispielsweise darin bestehen, Speicher zu lesen, in diesen zu schreiben oder ihn freizugeben, der nicht im Besitz der Aufgabe ist. Eine häufige Art von Speicherverletzung ist ein Stapelpufferüberlauf, bei dem ein Programm versucht, die für seinen Aufrufstapel festgelegten Grenzwerte zu überschreiten . Es kann sich auch auf eine versuchte Änderung des Speichers beziehen, der einem anderen Thread "gehört", wenn ein unvollständiger (oder kein) Speicherschutz besteht.

Vermeidung von Speicherverletzungen

Speicherverletzungen können in Transaktionssystemen wie CICS auftreten, wenn es möglich ist, in einen Speicher zu schreiben, der nicht im Besitz der Transaktion ist. Solche Verstöße können reduziert werden, indem Funktionen wie Speicherschutz und Transaktionsisolation aktiviert werden .

Erkennung von Speicherverletzungen

Speicherverletzungen können schwierig zu erkennen sein, da ein Programm nach dem Verstoß häufig für einen bestimmten Zeitraum ausgeführt werden kann, bevor es abstürzt. Beispielsweise kann ein Zeiger auf einen freigegebenen Speicherbereich beibehalten und später wiederverwendet werden, was zu einem Fehler führt. Infolgedessen konzentrieren sich die Bemühungen darauf, Verstöße zu erkennen, sobald sie auftreten, und nicht später, wenn das Problem beobachtet wird.

In Systemen wie CICS werden Speicherverletzungen manchmal (vom CICS- Kernel ) mithilfe von "Signaturen" erkannt, die getestet werden können, um festzustellen, ob sie überlagert wurden.

Eine alternative Laufzeitbibliothek kann verwendet werden, um Speicherverletzungen auf Kosten eines zusätzlichen Overheads besser zu erkennen. Einige Programmiersprachen verwenden die Überprüfung der Softwaregrenzen , um diese Vorkommnisse zu verhindern.

Einige Programm- Debugging- Software erkennt auch Verstöße während des Tests.

Häufige Ursachen

  • Ein außer Kontrolle geratener Index, der zur illegalen Verwendung von Referenzänderungen während der Laufzeit führt.
  • Nicht übereinstimmendes Verknüpfungslayout zwischen aufgerufenen und aufrufenden Elementen.
  • Verwendung von zuvor freigegebenem (und manchmal bereits neu zugewiesenem) Speicher.

Beispiele für Software zur Erkennung von Speicherverletzungen

Siehe auch

Verweise

Externe Links