Was ist eine Segmentation-Störung?

Eine Segmentationstörung ist eine Computerstörung, die auftritt, wenn ein Programm versucht, auf eine Region des Gedächtnisses auf eine unzulässige Art zurückzugreifen. Diese Störungen können Lesefehler sein, in denen ein Versuch, Daten zu lesen gebildet wird, die nicht richtig initialisiert worden ist, oder Störungen schreiben, in denen ein Programm versucht, Daten zu einer falschen Position in Gedächtnis zu schreiben. In der Computer-Ausdrucksweise wird der Ausdruck häufig zum segfault verkürzt. Da segfaults im Datenmesswert und -schreiben auftreten können, können sie in einer Vielzahl von Zusammenhängen und mit verschiedenen spezifischen Namen, einschließlich Bus-Fehler, Pufferüberlauf, Seitenwechselanforderungen und Speicherverletzungen auftreten.

Obgleich eine Segmentationstörung in einigen Computersprachen leicht verursacht werden kann als andere, sind segfaults nicht Teil Computersprachen selbst. In der Theorie kann jede mögliche Computersprache eine Datenschreibensstörung verursachen, die ein segfault laicht. Computersprachen, die einem Programmierer erlauben, Gedächtnis, wie C++ ausdrücklich zu behandeln, erlauben dem Benutzer, unbeabsichtigte segfaults mit der armen Programmierung verhältnismäßig leicht vorzustellen. Sprachen, die nicht ausdrückliches Gedächtnismanagement, wie Java, Handgriff erlauben, das meiste Gedächtnis gibt ohne die Störung des Programmierers heraus und setzt folglich Segmentationstörungen herab, indem sie einem Programmierer keine Weise geben, auf Bereiche des zugeteilten Gedächtnisses zweckmäßig draußen zurückzugreifen.

Die Weisen, in denen ein Programmierer eine Segmentationstörung verursachen kann, schwanken, abhängig von der Weise, in der Daten verwendet werden. Es gibt bestimmtes Konstruieren, dem einfacher sein, zu verursachen diese Störung mit. Ein gemeiner Angeklagter eines segfault ist eine Reihensammelstörung, in der spezifische Daten in den Schlitzen innerhalb einer bestimmten Speicherstelle aber der Programmiererversuche, auf einen Schlitz zurückzugreifen enthalten werden, der nicht existiert. Segfaults laichte durch diese Situationen sind häufig schwierig, ausfindig zu machen. Einige Computersprachen haben Grenzen zu überprüfen, das diese Art der Störung vorwegnimmt und den Benutzer nicht wird versuchen lassen, auf einen unzulässigen Schlitz zurückzugreifen.

Eine weniger allgemeine Weise, in der segfaults erzeugt werden können, tritt auf, wenn zwei Computersprachen Daten zwischen einander using eine Vollmacht übermitteln. In diesem Zusammenhang ist eine Segmentationstörung besonders schwierig zu bestimmen, weil es nicht immer frei ist, dem Sprache oder Schicht des programmierencodes die Störung von kommt. Festzustellen, selbst wenn eine Schicht implizite hat Grenzen zu überprüfen und nicht segfaults in 99.9% von Zusammenhängen erlaubt, kann es ein sehr Zeit raubender und langwieriger Job sein, wohin die Störung von kam.

Die beste Weise, Segmentationstörungen zu vermeiden ist, mit Gedächtnismanagement sehr vorsichtig zu sein. Die meiste gute programmierenpraxis empfiehlt, dass Benutzer jedes Byte des Gedächtnisses ausdrücklich freigeben sollten, das manuell in einem Programm zugeteilt wird. Dieses ist häufig schwierig zu tun, aber das Handeln es erhöht richtig die Wahrscheinlichkeiten eines Programmierers der Schaffung eines robusten, fehlerlosen Programms.