Ein solcher Fehler ist der Zugriffsverletzungsverletzungsort -Standortfehler in C ++ und dieser Artikel ist der Diskussion dieses Fehlers gewidmet. Genauer.04.
Was ist Fehlerzugriffsverletzung Schreibort in C ++ in Ubuntu 20.04?
Vor dem Auftreten dieses Fehlers mussten wir zunächst erkennen, was dieser Fehler wirklich ist. Wie der Name sagt, tritt dieser Fehler auf. Mit anderen Worten, wenn Sie versuchen, die Normen des Zugriffs auf einen von der C ++ - Programmiersprache eingerichteten Schreibort zu verletzen, werden Sie immer auf diesen Fehler stoßen. Nun stellt sich die nächste Frage, welche spezielle Programmierpraxis zu diesem Fehler führen kann.
Die einfachste Antwort ist, dass, wenn Sie die tatsächliche Verwendung verschiedener Entitäten einer Programmiersprache nicht verstehen, solche Fehler sehr wahrscheinlich auftreten. Zum Beispiel sind Sie sich der Verwendung von Zeigern und Objekten einer Klasse nicht bewusst. Für den Zugriff auf die Mitgliederfunktionen einer Klasse in C ++ ist nur ein Objekt dieser Klasse erforderlich. In einigen Fällen benötigen Sie jedoch möglicherweise einen Zeiger dieser Klasse. In diesem Fall müssen Sie verstehen, dass Sie diesen Zeiger initialisieren müssen, bevor Sie versuchen, damit auf etwas zugreifen zu können. Wenn dies nicht der Fall ist. Abgesehen davon kann es jedoch auch einige andere Situationen geben, die zu diesem Fehler führen können.
Beispiel für das Auftreten des Zugriffsverletzung Schreibstandort Fehler in C ++ in Ubuntu 20.04
Um Ihnen das Szenario zu erläutern, das möglicherweise zum Auftreten des Zugriffsverletzungs -Schreibort -Ortes in C ++ führen kann, haben wir das folgende Beispiel codiert:
In diesem kleinen Beispiel -C ++ - Code haben wir eine Klasse mit dem Namen "Test". Innerhalb dieser Klasse haben wir nur eine einzelne öffentliche Mitgliederfunktion mit dem Namen "myfunc ()", deren Rückgabetyp "void" i ist.e., Diese Funktion wird nichts zurückgeben. Innerhalb dieser Funktion haben wir einfach eine Nachricht auf dem Terminal gedruckt. Dann haben wir unsere "main ()" -Funktion, in der wir zuerst einen Zeiger der Klasse "Test" erstellt haben. Danach haben wir versucht, mit dem Zeiger dieser Klasse auf die Funktion „myfunc ()“ der „Test“ -Klasse zuzugreifen, indem wir die “verwenden." Operator. Dann haben wir gerade die Anweisung "Return 0" verwendet, um unseren Code zu schließen.
Wir haben den unten gezeigten Befehl verwendet, um diesen Code -Snippet zu kompilieren:
$ g ++ Fehler.CPP -O -FehlerSobald wir versuchten, diesen C ++ - Code zu kompilieren, wurde der im folgende Bild angezeigte Fehler am Terminal erstellt:
Mit anderen Worten, der oben gezeigte Fehler ist auch als Zugriffsverletzungsverletzungsstandort in C bezeichnet++. Dies bedeutet, dass wir versucht haben, auf einen Ort zuzugreifen, an den wir nicht zugreifen durften. Dieser Fehler ist in diesem Fall aufgetreten. Vielmehr haben wir einfach einen Zeiger des "Test" -Typs erstellt. Dieser Zeiger zeigte nicht auf einen bestimmten Ort, wodurch er eine Mülladresse enthielt. Als wir versuchten, während der Verwendung dieses Zeigers auf die Mitgliederfunktion der „Test“ -Klasse zuzugreifen, wurde der Fehler am Terminal erstellt, da diese Adresse nicht die Referenz auf ein gültiges Objekt der „Test“ -Klasse enthielt, mit der Wir können auf seine Mitgliederfunktionen zugreifen.
So beheben Sie den oben besprochenen Fehler?
Es gibt zwei verschiedene Möglichkeiten, den Zugriffsverletzungs -Schreibort Fehler in C ++ zu beheben, die wir erst oben diskutiert haben. Diese beiden Methoden wurden im Folgenden ausführlich erörtert: unten:
Fix 1: Durch dynamische Speicherzuweisung in c++
Wenn Sie beabsichtigen, einen Zeiger der Zielklasse für den Zugriff auf die Mitgliederfunktionen zu erstellen, können Sie diese Methode verwenden. Die Fix für diese bestimmte Methode in der Form eines C ++ - Code ist im folgenden Bild angezeigt:
In diesem Fix ist der Basiscode für unsere Beispielklasse gleich. Wir haben jedoch einige Änderungen in unserer Funktion „main ()“ vorgenommen. Zunächst haben wir einen Zeiger des "Test" -Typs erstellt, während wir das Keyword "neu" verwendet haben. Wenn wir dies tun, initialisieren wir im Wesentlichen den Zeiger vom Typ "Test" durch dynamische Speicherzuweisung i.e., Wir vergeben diesen Speicher auf dem Haufen. Mit Hilfe dieses neu initialisierten Zeigers haben wir dann versucht, auf die Mitgliedsfunktion der „Test“ -Klasse zuzugreifen, während wir den „->“ -Personal in C verwenden++.
Nachdem wir diese Änderung in unserem Code vorgenommen hatten, wurde sie erfolgreich zusammengestellt und als wir diesen kompilierten Code ausführten, erhielten wir die gewünschte Ausgabe auf dem Terminal, wie im folgenden Bild gezeigt:
Fix 2: Durch das Erstellen eines gültigen Objekts der Zielklasse in C erstellen++
Wenn Sie nun die dynamische Speicherzuweisung oder mit anderen Worten nicht mit den Zeigern ausführen möchten, können Sie diese Methode verwenden. Diese Methode erstellt ein gültiges Objekt der Zielklasse in C ++ für den Zugriff auf seine Mitgliederfunktion. Die Fix für diese bestimmte Methode in der Form eines C ++ - Code ist im folgenden Bild angezeigt:
In diesem Fix ist der Basiscode für unsere Beispielklasse dieselbe. Wir haben jedoch einige Änderungen in unserer Funktion „main ()“ vorgenommen. Erstens haben wir ein Objekt oder eine Instanz der "Test" -Klasse erstellt. Diese Instanz oder dieses Objekt wird auf dem Stapel und nicht auf dem Haufen erstellt. Mit Hilfe dieses neu erstellten Objekts haben wir dann versucht, auf die Mitgliederfunktion der "Test" -Klasse zuzugreifen, während wir das verwenden.Operator in c++.
Nachdem wir diese Änderung in unserem Code vorgenommen hatten, wurde sie erfolgreich zusammengestellt und als wir diesen kompilierten Code ausführten, erhielten wir die gewünschte Ausgabe auf dem Terminal, wie im folgenden Bild gezeigt:
Abschluss
Dieses Tutorial gab eine schöne Erklärung für den Fehler beim Schreiben von Zugriffsverletzungen in C ++ in Ubuntu 20.04. Um dieses Ziel zu erreichen, haben wir Ihnen zunächst die Bedeutung dieses Fehlers erklärt, gefolgt von den Programmierpraktiken, die zu diesem Fehler führen können. Danach haben wir Ihnen ein Beispielszenario mitgeteilt, das zusammen mit den Methoden zu diesem Fehler führen kann. Nachdem Sie diesen Artikel durchlaufen haben, können Sie diesen Fehler vermeiden, während Sie Ihre Programme in C ++ in Ubuntu 20 erstellen.04.