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 stehenFehlermeldung:

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!