Steigende Speicherauslastung bei LoadImage



  • Hallo,

    ich habe bei folgender Funktion eine stetig steigende Speicherauslastung.
    Beim debbugen habe ich festgestellt, dass die Auslastung des Speicher immer
    nach dem Funktionsaufruf von ::LoadImage(...) einen "Sprung macht".

    // Gewählte Bitmap-Datei laden
    	HBITMAP hBitmap = (HBITMAP) ::LoadImage (AfxGetInstanceHandle(),sFilePathName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    
    	// Ist Handle für das geladene Bild gültig?
    	if(hBitmap)
    	{	
    		GetBitmapBits(hBitmap,m_iSize,m_bImagePointer);
    		// Aktuelles Bitmap löschen
    		if(m_DiBitmap)
    			delete(m_DiBitmap);
    
    		m_DiBitmap = new CDib((BYTE*)m_bImagePointer,m_iWidth,m_iHeight,8);
    	}
    

    Kann mir da jemand weiterhelfen?

    Vielen Dank!
    Gruss charlie



  • haja wenn er über den Speicher läd wird der natürlich ausgelasteter. Sorry versteh dein Problem nicht! Wird er denn nicht mehr freigegeben? Das wäre eine andere Geschicht. Du solltest vielleicht

    m_DiBitmap = new CDib((BYTE*)m_bImagePointer,m_iWidth,m_iHeight,8);
    

    auch wieder irgendwann löschen



  • Hab mein Problem vielleicht nicht richtig formuliert. Wenn ich mehrfach Bilder
    lade, steigt der Speicher immer weiter. Anscheinend wird der Speicher nicht wieder
    frei gegegeben.
    Das CDib Objekt wird im Destruktor der Klasse gelöscht.



  • schau mal wo genau der Heap auftritt entweder mit Spy ++ (mit Visual geliefert)
    oder mit dem hier



  • Das Tool ist echt genial. Hab den Fehler gefunden.
    Ich muss das hBitmap Objekt mit DeleteObjekt wieder löschen.

    Besten Dank!

    Gruss Kai



  • charlie-ux schrieb:

    Das Tool ist echt genial. Hab den Fehler gefunden.
    Ich muss das hBitmap Objekt mit DeleteObjekt wieder löschen.

    Besten Dank!

    Gruss Kai

    Hattest du erwartet das sich der Speicher automatisch freigibt oder wie?



  • Wieso hast du mir nicht gleich die Antwort geschrieben, wenn du den Fehler gewusst hast?
    Ich mag es ja wenn Leute nach Finden der Lösung schlaue Sprüche abgeben.

    Mein Denkfehler war, dass ich gedacht habe, der durch HBITMAP belegte Speicher wird
    nach Verlassen der Funktion wieder frei gegeben, da das Objekt ja nur in der
    Funktion Gültigkeit besitzt. Kann ja mal passieren.

    Gruss charlie



  • Lass dich von einem unreg-User nicht verarschen. Der soll sich erstmal registrieren, dann kann Sprüche klopfen.



  • lol? ich hab doch gar nichts schlimmes gemacht 😕 😕

    verarschen wollte ich auch niemanden



  • Freut mich wenn mein Tool dir weiter geholfen hat 😉

    ÄÄÄhm moment also halt mein Link zu dem Tool, das Tool ist nicht meins. (nicht dass es da missverständnisse gibt!



  • Polofreak schrieb:

    Freut mich wenn mein Tool dir weiter geholfen hat 😉

    ÄÄÄhm moment also halt mein Link zu dem Tool, das Tool ist nicht meins. (nicht dass es da missverständnisse gibt!

    hätte dir auch bestimmt niemand zugetraut. 😉



  • Hey Herr / Frau Missverständniss! Ich glaub das war grad Mobbing am Arbeitsplatz!
    oute dich! 😃


Anmelden zum Antworten