Ich habe noch mal eine Weile herumexperimentiert.
Der Fehler tritt immer beim Laden von Images im TIF-Format auf und ist leicht nachvollziehbar, wenn man den Taskmanager öffnet und sich den Zuwachs des Speicherverbrauchs des folgenden kompilierten Programms anschaut:
Code:
UseTIFFImageDecoder()
Enumeration
#img_handle
EndEnumeration
MessageRequester("!", "Schau auf den Speicherverbrauch im Taskmanager!")
For i = 1 To 1000
LoadImage(#img_handle, "testimage.tif")
FreeImage(#PB_All) ; #PB_All kann auch gegen #img_handle ersetzt werden -> gleiches Ergebnis
Next
MessageRequester("!", "Schau auf den Speicherverbrauch im Taskmanager!")
End
Das TIF kann ein beliebiges Image sein (größere Formate äußern sich in schneller wachsendem Speicherverbrauch).
Da das TIF-Format eine Art Container für verschiedene Image-Komprimierungen ist, habe ich verschiedene Komprimierungsmethoden ausprobiert.
Besonders krass war das Ergebnis mit einem TIF-Image in schwarz/weiß komprimiert nach Fax G3. Hier hat sich der Speicherverbrauch des Programms von 1.820kB auf sagenhafte 241.492kB vermehrt! Bei Fax G4 war es noch stolze 124.632kB und bei JPG immerhin noch 87.472kB.
Probiert man gleiches mit einem Image im JPG-Format (UseJPEGImageDecoder()), ergibt sich jeweils nur ein konstanter größerer Speicherverbrauch (auf 1.968kB) der vermutlich aus der von Stargate erwähnten Initialisierung des Decoders resultiert.
Kann das jemand bei sich nachvollziehen?