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
