Zugriffsfehler... Wer kann mir helfen???



  • Hi,

    Ich habe ein Übungsprogramm abgetippt. Bekomme aber beim compilieren folgenden Fehler:

    -Im Projekt ...exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004011E7. Lesen von Adresse 00000004'. Prozess wurde angehalten. MIt einzelne Anweisung oder start fortsetzen.

    Hier ist der komplette Code:

    /*#########################################
    Dynamische Speicherverwaltung
    #########################################*/
    #include <iostream.h>
    
    struct strukturtyp {
            int inhalt1;
            int inhalt2;
    };
    
    strukturtyp* strukturzeiger1;
    strukturtyp* strukturzeiger2;
    
    void main() {
            // Neues Element erzeugen
            strukturzeiger1 = new(strukturtyp);
            // Werte hineinschreiben
            strukturzeiger1->inhalt1 =10;
            strukturzeiger1->inhalt2 =20;
    
            // Ausgabe der Werte über den Zeiger
            cout << "Inhalt 1 : ";
            cout <<strukturzeiger1->inhalt1 << "\n";
            cout << "Inhalt 2 . ";
            cout << strukturzeiger2->inhalt2 << "\n";
    
            // Die Adresse in einen anderen Zeiger kopieren
            strukturzeiger2 = strukturzeiger1;
    
            // Ausgabe der Werte über den anderen Zeiger
            cout << "Inhalt 1 : ";
            cout << strukturzeiger2->inhalt1 << "\n";
            cout << "Inhalt 2 : ";
            cout << strukturzeiger2->inhalt2 << "\n"; 
    
            // Speicher freigeben
            delete(strukturzeiger2); 
            // Zur Sicherherit die Zeiger auf NULL setzen 
            strukturzeiger1 = NULL; 
            strukturzeiger2 = NULL;
    
            char p[50]; 
            cin.getline(p,50); 
    }
    

    Der Debugger bleibt in Zeile 25 stehen:

    cout << strukturzeiger2->inhalt2 << "\n";
    

    Ich kann nicht erkennen was daran falsch ist. Wenn jemand von euch ne Idee würde mir das sehr weiterhelfen.

    MFG

    Mr.Blond



  • Weil der Zeiger auf einen zufälligen Speicherbereich zeigt...
    du musst per new ein objekt erstellen und den Zeiger darauf zeigen lassen.



  • Ich Depp kann nicht mal richtig abtippen. Obwohl ich alles schon mehrmals überprüft hatte. Sorry. Und danke nochmal. Jetzt funktionierts.


Anmelden zum Antworten