Zitat von
Bernhard Geyer:
Zitat von
himitsu:
Dynamische Arrays sollten ja eigentlich 'ne Referenzzählung besitzen
Wirklich? Wäre mir neu.
siehe
FType.pas Abschnit "Compiler Intern Data-Types"
Delphi-Quellcode:
Const DynArrayInfo = SizeOf(Header); // Herader = RefCount + ElementCount
MaxLengthOfMyType = (High(Integer) - DynArrayInfo) div SizeOf(TMyType);
Type TDynArrayInfo = packed Record
RefCount: LongInt;
ElementCount: LongInt;
Data: packed Array[0..MaxLengthOfMyType-1] of TMyType;
End;
und wie bekannt ist, zeigt der interne Pointer auf Data ...
PS: AnsiString und UnicodeString sind auch nur ein dynamisches Array (allerdings mit noch einem zusätzlichen 0#-Data-Feld am Ende)
und WideString ist ein OLEStr
[add]
Zitat:
Aber der Code sieht mit der lokalen Variablen nach C/C++ aus und da wird mit return die Routine verlassen.
genau das meinte ich ... in Delphi ist das ja nicht so, aber viele übersetzen C-Code halt direkt und mit der nun "unnötigen" Temp-Variable