Code: Alles auswählen
Procedure.i _MemAllocWrapper(Size.l, File.s, Line.l)
Debug File+"["+Str(Line)+"]"+": Memory Allocated - Size( "+Str(Size)+" )"
ProcedureReturn AllocateMemory(Size)
EndProcedure
*mem = _MemAllocWrapper(1000,#PB_Compiler_File, #PB_Compiler_Line)
FreeMemory(*mem)Sobald ich allerdings beide Parameter aus der Funktion raus nehme, so das ich nur noch Size angebe, dann bekomme ich keine IMA mehr...
Unter Windows scheint alles zu Funktionieren.
Grade nochmal getestet, erst sobald die Funktion als Parameter einen String mit erwartet, bekomme ich einen IMA, solange die Parameter nur Longs sind, klappt das einwandfrei.
Sollte ein Bug sein, da dies ein Verhalten ist, was ich mir nicht erklären kann...
EDIT: oder tritt da dieser Fall ein, hab grad nochmal im DevBlog rumgestöbert, weil ich mir überlegt hab mal das "Purify It!" zu übersetzen, denn viele hier scheinen gar nicht zu wissen was der Purifier ist, bzw. was er macht, geschweige denn dass es ihn gibt...
Könnte es also sein das hier der Fall der "random value" eintritt und ich deshalb einen IMA bekomme?There are some limitations tough: threaded program could report wrong line and if a pointer is really filled with a random value, it won’t be noticed by it (but probably by the debugger as IMA – Invalid Memory Access).
EDIT2:
Liegt definitiv nich an mir oder dem Speicher, sondern am Purifier, der kommt echt mit einem Stringparameter nicht klar.
Code: Alles auswählen
Procedure.i _MemAllocWrapper(Size.l, File.s);, Line.l)
Debug File+"["+Str(Line)+"]"+": Memory Allocated - Size( "+Str(Size)+" )"
Protected *temp = AllocateMemory(Size)
FillMemory(*temp, Size) ;No random data anymore...
ProcedureReturn *temp
EndProcedure
*mem = _MemAllocWrapper(1000, #PB_Compiler_File);, #PB_Compiler_Line)
FreeMemory(*mem)
Blackskyliner