Du hast ein Speicherleck in deiner zweiten Methode, der String wird nicht freigegeben.helpy hat geschrieben:Wenn der Pointer auf einen String übergeben wird (mit welcher Methode auch immer), muss in jedem Fall vom Programmierer sicher gestellt werden, dass der String nicht verändert wird, solange dieser nicht endgültig vom Thread (oder von was auch immer) verarbeitet worden ist.
Ich habe da vor kurzem etwas ähnliches, wie den folgenden Code verwendet:Das ist nur eine Möglichkeit!Code: Alles auswählen
Procedure NewTmpString(s.s) Protected *s.String = AllocateMemory(StringByteLength(s)+SizeOf(Character)) If *s PokeS(*s,s) EndIf ProcedureReturn *s EndProcedure Procedure.s GetTmpString(*s.String) Protected s.s If *s s = PeekS(*s) FreeMemory(*s) EndIf ProcedureReturn s EndProcedure
cu, guido
Siehe hier: http://www.purebasic.fr/english/viewtopic.php?t=33703 (2. Post)