Debug Assertion Failed !



  • Was kann man bei der Fehlermeldung machen. Irgendwas mit Heap-Speicher-Verwaltung stimmt da nicht. Ich hab eine Funktion geschrieben, in der ich den Inhalt einer Datenstruktur aufteile. Habs auch mit STL-Vektoren anstatt Arrays probiert, aber gleiche Fehlermeldung.
    Wenn er die Funktion verlassen will, kommt folgender Fehlermeldung im Debug-Modus.

    Fehlermeldung:
    **Debug Assertion Failed!

    Program: ....
    File: dbgheap.c
    Line: 1011

    Expression: _CrtIsValidHeapPointer(pUserData)**

    void CKundenZeichnung::uebertrageInhalte(CRegionen regionen,CKonturen* konturen)
    {
    	vec_konturen=new CKonturen*[regionen.region.size()];
    	for (int akt_reg=0;akt_reg< regionen.region.size();akt_reg++) // durch alle Regionen gehen
    	{
    		//Initialisierung
    		CKonturen* newKonturen = new CKonturen();
    		//Anzahl der Konturen:
    
    		newKonturen->npts = new int[regionen.region[akt_reg].size()];
    		// Anzahl der Punkte in der kontur:
    		for (int kont=0;kont< regionen.region[akt_reg].size(); kont++)
    		{
    
    			newKonturen->npts[kont]=konturen->npts[regionen.region[akt_reg][kont]];
    		}
    		//Initialisierung für die Punkte:
    
    		newKonturen->pts= new CvPoint*[regionen.region[akt_reg].size()];
    
    		for (int z=0;z<regionen.region[akt_reg].size();z++)//durch Konturen der Region
    		{
    
    			newKonturen->pts[z]=new CvPoint[newKonturen->npts[z]];
    		}
    
    		//eigentlicher Kopiervorgang
    		newKonturen->anzahl=regionen.region[akt_reg].size();
    		for (kont=0;kont< regionen.region[akt_reg].size(); kont++)
    		{
    			for (int punkt=0; punkt< konturen->npts[regionen.region[akt_reg][kont]];punkt++)
    			{
    				newKonturen->pts[kont][punkt].x =konturen->pts[regionen.region[akt_reg][kont]][punkt].x;
    				newKonturen->pts[kont][punkt].y =konturen->pts[regionen.region[akt_reg][kont]][punkt].y;
    			}
    		}
    
    		vec_konturen[akt_reg]=newKonturen;
    	}	
    	ausgebenKonturen();
    
    }
    

    Im Release-Modus läuft er an der Stelle weiter, aber bringt trotzdem eine Standard-Fehlermeldung.

    Was kann man da noch machen ???
    Bin schon ziemlich hilflos. Beim Googlen findet man auch keine richtigen Antworten.



  • Dann kuckst du im Stacktrace des Debuggers mal von welcher Stelle aus, in deinem
    Code, der Fehler ausgelöst wird.
    Da du selbst nicht angibst wo die Fehlerstelle ist und meine Kristallkugel
    kaputt ist, musst/willst du dein Problem wahrscheinlich alleine lösen.



  • Hab das fehlerverursachende Übel gefunden:

    Die Übergrabe des Parameters "CRegionen regionen" als Objekt. Hat zwar mit der Weiterverarbeitung der Werte funktioniert, aber zum besagten Abbruch geührt. Habe jetzt den Zugriff verzeigert (CRegionen *regionen als Parameter und regionen-> anstatt regionen. ) und es geht 🙂



  • brainesic schrieb:

    Die Übergrabe des Parameters "CRegionen regionen" als Objekt. Hat zwar mit der Weiterverarbeitung der Werte funktioniert, aber zum besagten Abbruch geührt.

    Da fehlt dann wohl ein ordentlicher Copy-Ctor.


Anmelden zum Antworten