Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#13

Re: String Gültigkeit + PChar Verwendung

  Alt 26. Feb 2008, 15:53
Zitat von sirius:
Ein String muss auch die ganze Prozedur über auf dem Stack liegen, damit diese dynamische Variable (die ja vom Compiler verwaltet wird) auch immer zuverlässig freigegeben wird.
Dazu legt Delphi um die gesamte Prozedur automatisch ein try..finally, damit asuch im Fehlerfall der String freigegeben werden kann. dazu muss er allerdings immer auf dem Stack liegen (jeder Thread hat übrigens seinen eigenen Stack). Ich wüsste nicht, dass die Code-Optimierung einen String in die Register schiebt.
ok .... wenn ich mir den RefCount vom String selber um eins erhöhen würde, damit Delphi am Ende der Procedure den String nicht freigibt.
(dann entsteht auch ein Speicherleck, wenn man es mal in einer Schleife testet)
Wie müsste ich den String dann sauber selber freigeben?
Und Manchmal steht der RefCount vom String in normalen Proceduren manchmal auf -1?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat