Kurze Verständnisfrage zu CopyImage (Image1, Image2)

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Kurze Verständnisfrage zu CopyImage (Image1, Image2)

Beitrag von Kurzer »

Hallöle...

Kurze Verständnisfrage zu CopyImage (#Image1, #Image2):

Wenn #Image2 bereits besteht, dann wird durch CopyImage doch nur der Inhalt überschrieben und *keine* neue "Imageinstanz" erzeugt, oder?
Die Hilfe ist da etwas undeutlich: "Erstellt ein neues Bild '#Image2', welches identisch zur Quelle '#Image1' ist."

Ich will nicht Speicher für 3 Bilder verballern, nur weil ich's nicht verstanden habe. ;-)
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

ich denke #img2 wird 'befreit' und durch ein neues ersetzt, mit den dimensionen von #img1.
eben wie den create()-funktionen
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Was spricht gegen ein vorherieges FreeImage(Image2)? :D
... ansonnsten würd es mich schon wundern, wenn das verhalten anders
wäre als #NULL schon geschrieben hat. Eventuell mal Rumprobieren mit
großen Images oder mal Fred fragen. Der is bestimmt immer noch öfters
im IRC-Channel. :wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

habs mal getestet:

Code: Alles auswählen

CreateImage(0,800,800)
For i=0 To 100000
  CopyImage(i,i+1)
  FreeImage(i)
Next
laut taskmanager ist das clean.
my pb stuff..
Bild..jedenfalls war das mal so.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

aber da benutzt du doch FreeImage...
wenn, dann müßtest du das schon so machen:

Code: Alles auswählen

CreateImage(0,800,800)
For i=0 To 100000
  CopyImage(0,1)
Next 
immer wieder aufs selbe drüberkopieren.

habs mal laufen lassen.
ist wohl sicher, der speicherverbrauch wächst nicht kontinuierlich an,
aber die garbage-collection scheint ein wenig hinterher zu hinken,
der speicherverbrauch schwank zwischen 1.5 und 4 MB.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

stimmt, freeimage brauchen wir nicht testen, sollte ja gehen :mrgreen:
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag von Kurzer »

Hey, danke für Eure Mühe.
Auf den Test mit dem Messen des Speicherverbrauchs hätte ich auch kommen können :oops: (ich sollte wohl doch keinen Klaren mehr schlürfen am späten Abend ;))

Gegen ein vorheriges FreeImage() spricht eigentlich nichts, ich war mir nur nicht sicher wegen der komischen Formulierung im Help.
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
Antworten