Seite 3 von 3

Verfasst: 17.05.2007 15:05
von ts-soft
Mit CopyMemory kopierste ja nur den Zeiger zu dem String, welcher nach
DeleteElement ja nicht mehr gültig sein muß. Nimm Fixstrings, dann sollte
es gehen. Es funktioniert ja nur manchmal, weil der Stringbuffer ja nicht
immer sofort überschrieben wird.

Verfasst: 17.05.2007 17:56
von mk-soft
Stimme ts-soft zu.
Falscher Umgang mit Strukturen, Pointer und Strings.

Wer mit Strukturen und Pointer arbeiten möchte , gibt es von Freak ein sehr gutes Tutorial über Pointer.

http://freak.purearea.net/help/help.html

Variablen als Strings sind Pointer und es werden die Speicherbereiche bei DeleteElement(...) freigeben.
Bei Strukturen mit String und Speicheranforderung mit AllocateMemory und FreeMemory sind noch einige Sachen zu beachten.
Bei falscher Anwendung führt dieses zu einem Speicherleck.

http://www.purebasic.fr/german/viewtopi ... eicherleck

FF :wink:

Verfasst: 17.05.2007 19:50
von Leonhard
ts-soft hat geschrieben:Mit CopyMemory kopierste ja nur den Zeiger zu dem String, welcher nach
DeleteElement ja nicht mehr gültig sein muß.
Warum/Wann wird der String gelöscht? Es wird doch gar nicht angegebn, das der String-Buffer freigegeben werden soll.

Wenn ich das Struktur-Element 'Token\sValue' als Pointer erstelle, funktioniert alles. Warum?

Verfasst: 17.05.2007 19:59
von ts-soft
>> Warum/Wann wird der String gelöscht?
Weil Du das Element löscht, dann wird aufgeräumt, manchmal sofort, manchmal später :mrgreen:
Normalle Strings werden nur als Pointer gespeichert, also wird mit
CopyMemory auch nur der Pointer copiert. Ansonsten mußte Dir den
Stringbuffer extra kopieren oder besser Fixstrings verwenden, die befnden
sich tatsächlich dort, wo du sie vermutest :mrgreen:

Verfasst: 18.05.2007 23:33
von Little John
Ich finde der Titel dieses Threads sollte geändert werden. Das Wort "Bug" sollte nicht darin vorkommen (kann z.B. durch "Problem" ersetzt werden).
So wie es z.Z. ist, ist es sehr irreführend, und vor allem dazu geeignet PB-Benutzer zu verunsichern! Unbegründet und unnötig zu verunsichern, denn ein Bug in PB konnte ja keineswegs aufgezeigt werden.

Gruß, Little John

Verfasst: 18.05.2007 23:40
von ts-soft
Hab den Titel mal angepaßt. Wir Wissen ja wo der Bug saß :mrgreen:

Verfasst: 18.05.2007 23:43
von Little John
Danke, das ging ja schnell. :)

Gruß, Little John