Stimmt dynamische arrays gabs zu seinen zeiten noch nicht.
Sie sind aber an die normalen arrays angelehnt, und deren Syntax stammt vom Wirth. Und auch dynamische arrays sind "nur" Variablen hat also mit Objekt Pascal aus sicht des Benutzers nichts zu tun (wie das intern gehandelt wird weiss ich net glaub aber auch nicht das dazu objekte benutzt werden).
Mit finalize hab ich mich vertan, das sollte wirklich auch für d-arrays funktionieren denn es funktioniert teoretisch auch für strings.
.Free kann aber net gehn ist ja kein Objekt.
und := nil ???
Soweit ich weiss sind die dynamischen arrays nicht im compiler implementiert sondern in einer seperaten unit wie soll die unit das setzen auf nil erkennen ?
Ich kann mir vorstellen das das compiliert und ausgeführt wird aber nicht das dabei Speicher freigegeben wird.
Warscheinlich crasht das programm dann beim verlassen der procedure.
@zummy
Note that the length of the array is set in elements, not in bytes of allocated memory (although these may be the same). The amount of memory allocated is the size of the array multiplied by the size of 1 element in the array. The memory will be disposed of at the exit of the current procedure or function.
hast du mal probiert on beim verlassen der Funktion der Speicher freigegeben wird ?!
procedure Fake;
var
s : array of byte;
begin
Setlength(s,1000000);
end;
begin
Fake;
//hier sollte wieder alles ok sein !?
end;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/