Speicher allocieren



  • Hallo,
    vielleicht kann mir hier jemand helfen ich hab ein Problem mit Visual Studio.net
    und zwar:

    ich muß ein Programm für ein Projekt mit der mfc erstellen.
    Dabei hab ich die SDI-Anwendung mit Doc/View und Datenbank Unterstützung gewählt.
    In diese Klassenkonfiguration hab ich noch 6 eigene Klassen und 2 dialogfelder implementiert.

    Die Appklasse erstellt zuerst eines der 2 Dialogfelder.
    Das 1. Dialogfeld ruft bei onok() das 2 dialogfeld auf und reserviert speicher für meine Hauptklasse der 6 eigenen Klassen, in welcher 3 Klassen Objekte der eigenen Klassen deklariert werden.In einer der 3 Eingeschlossenen Klassenobjekten soll ein Objektfeld von i Objekten einer weiteren eigenen Klasse erstellt werden.
    Der Zeiger der auf die Hauptklasse zeigt sollte dann als Hilfsmittel dienen i einen wert zu schicken dann die m_funktion des Objektes, welche das Feld allociert aufrufen.
    Beim Compilieren gibt es keine Fehler aber sobalt das Feld allociert werden soll bricht das Programm mit der unten geschriebenen Fehlermeldung ab.

    //Aufruf der Funktion im dialog Quelltext in der funktion OnOk() 
    pcks->m_csmStMeng.NewStFeld(m_nSteckAnz); 
    
    //Deklaration deklaration des Zeigers für das Feld der Objekte 
    protected: 
            CStecker* m_pcstSteckFeld; 
    
    // Difinition der Public memberfunktion die auf den zeiger zugreifen darf 
    void CSteckermenge::NewStFeld(int i) 
    { 
    :arrow: m_pcstSteckFeld =new CStecker[i]; //Der Debugger unterbricht hier
            m_pcstSteckAusgang=m_pcstSteckFeld; 
            m_pcstSteckEingang=m_pcstSteckFeld; 
            return; 
    } :arrow:  //Die Release bleibt hier stehen
    

    Fehlermeldung: 😕 😕 😕
    Unbehandelte Ausnahme bei 0x00402b04 in KabelstPrüf.exe: 0xC0000005: Zugriffsverletzung-Schreibposition 0x00000024.

    Danke im voraus für eure Hilfe!

    mfg
    Twist



  • Du kannst bei new nur einen Konstruktor des Objektes aufrufen,
    aber wohl kaum den [] operator. Lass mal die Eckigen Klammern weg,
    bzw. initialisiere das Objekt richtig.

    Devil



  • mmh ja ich hab den Fehler schon gefunden der zeiger pDoc war mit NULL initialisiert. Denn beim erstellen des Objektes vom dialogfeld wo i übergeben wurde hab ich die übergabe des zeigers erst hinter dem aufruf der DoModal() funktion gesetzt dadurch hat er den zeiger noch nicht kopiert gehabt. 💡
    Aber Danke für deine schnelle Hilfe!


Anmelden zum Antworten