Objekt-Array löschen



  • Hallo zusammen,

    hab da mal ne Frage.

    Hab mit delete[] probiert ein Objekt-Arry zu leeren, aber wenn ich einen neuen Datensatz in Array lade stürzt das Programm ab mit einem Adressfehler.

    Wie kann ich das Array lerren?



  • mit delete[] leert man nicht, sondern gibt den speicher für das array frei. (wenn es mit new[] angelegt worden ist)



  • Aso. Danke für die Nachhilfe.

    Habs jetzt mit

    ObjektArray.RemoveAll();
    

    gemacht.
    Jetzt funzt es.
    Diese Funktion löscht aber nur die Pointer. Wenn ich jetzt einen neuen Datensatz in das Array lade, werden die vorhgerigen Einräge überschrieben?



  • Du solltest uns vielleicht mehr verraten.

    Von welchem Typ ist ObjectArray? Ist das was aus der MFC?



  • Ja, sorry für die magere Beschreibung.

    Also das Array ist vom Typ CObArray und aus MFC.

    Dieses Array, nennen wir es m_Schnarrenberger, wird mit new initialisiert und gefüllt mit Daten.
    Diese Daten kommen aus einem Textfile. Wenn ich die Daten nicht mehr brauche un Daten aus einem anderen Textfiel laden will, soll m_Schnarrenberger geleert werden.

    Wie gesagt ich habs mit delete[] gemacht und hatte immerzu einen Adressfehler.
    Wenn ich es mit RemoveAll() mache, funzt es zwar, aber das Array ist dann doch nicht leer oder?



  • kann mir bitte bitte jemand helfen?



  • Wenn ich es mit RemoveAll() mache, funzt es zwar, aber das Array ist dann doch nicht leer oder?

    Warum überprüfst du das denn nicht selber?



  • Würd ich ja gern aber immer wenn ich auf irgendein Feld zugreif stürzt die Käsefabrik ab.



  • Zeig am besten den *relevanten* Code sonst kommen wir hier nicht weiter.



  • {
    	TRACE("[Lösche] Gruppe: %s \n", m_GroupName);
    	delete [] m_GroupName;
    
    	int liCount = m_oaElements.GetSize();
    	if (liCount)
    
    	{
    		for (int i = 0; i < liCount; i++) 
    		{
    			TRACE("[Lösche] Element: %s \n", m_oaElements[i]);
    			delete m_oaElements[i];
    		}
    		m_oaElements.RemoveAll();
    	}
    }
    

    Diese Methode sollte insgesamt 9x aufgerufen werden.
    In jeder Gruppe sind verschiedene Anzahl Elemente, die hier gelöscht werden sollen.
    Aber sobald ich auf das erste Feld in m_oaElements zugreife stürzt alles ab.



  • mit RemoveAll() leerst du zwar dein Array, aber der Speicher,den du selbst dynamisch belegt hast wird dabei nicht freigegeben, ist also richtig das du das extra per Hand machen musst


Anmelden zum Antworten