Speicherleck mit String vermeiden (FreeMemory)
Verfasst: 11.06.2006 12:28
Hallo Miteinander,
Bastel gerade mit eigenden Objekten rum und hatte das Problem mit Speicherlecks mit Strings bei FreeMemory von den Objekt.
Bin noch nicht ganz ASM Fest, aber habe folgendes hinbekommen.
Edit:
Um bei grossen Strukturen den Stringspeicher freizugeben gibt es noch
Habe ich aber nicht hinbekommen.
Wäre schön wenn man "FreeMemory(*b.udtTest)" schreiben könnte!
FF
Bastel gerade mit eigenden Objekten rum und hatte das Problem mit Speicherlecks mit Strings bei FreeMemory von den Objekt.
Bin noch nicht ganz ASM Fest, aber habe folgendes hinbekommen.
Code: Alles auswählen
Structure udtTest
val.l
text.s
EndStructure
Procedure StringFree(*Adr)
!extrn _SYS_FreeString@4
!PUSH dword [p.p_Adr]
!CALL _SYS_FreeString@4
EndProcedure
; Speicherleck
For i = 1 To 5
*b.udtTest = AllocateMemory(SizeOf(udtTest))
*b\text = "Hallo" + Space(1000)
Debug @*b\text
;StringFree(@*b\text)
FreeMemory(*b)
Next
; Ok
For i = 1 To 5
*b.udtTest = AllocateMemory(SizeOf(udtTest))
*b\text = "Hallo" + Space(1000)
Debug @*b\text
StringFree(@*b\text)
FreeMemory(*b)
Next
Um bei grossen Strukturen den Stringspeicher freizugeben gibt es noch
Code: Alles auswählen
!CALL SYS_FreeStringStructuredArray
oder !CALL _SYS_FreeStructureStrings@8
Wäre schön wenn man "FreeMemory(*b.udtTest)" schreiben könnte!
FF
