Thema: Delphi Array korrekt freigeben

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.776 Beiträge
 
Delphi 12 Athens
 
#4

AW: Array korrekt freigeben

  Alt Gestern, 20:58
Könnte man hier nicht auch lFilterArray := []; verwenden? Finde ich irgendwie schöner.
Das geht jetzt/inzwischen.
Früher ging es ja nicht, dass man dynamische Arrays so zuweisen konnte.

Wäre wohl angebracht nachzusehn, ob die CodeOptimierung auch hier funktioniert.
Beim SetLength war es mal so, dass es nicht / nicht immer optimiert wurde und dann wirklich der Aufruf auf System._DynArraySetLength erfolgte.

[edit]
Jupp, sieht gut aus. (ist wohl direkt passende CompilerMagic ... nicht erst die CodeOptimierung, denn im Debug-Profil ist die ja aus)
Delphi-Quellcode:
Unit3.pas.29: SetLength(TestArray, 3);
008042B3 6A03 push $03
008042B5 8D45F8 lea eax,[ebp-$08]
008042B8 B901000000 mov ecx,$00000001
008042BD 8B1568428000 mov edx,[$00804268]
008042C3 E8008FE2FF call $0062d1c8 // System._DynArraySetLength
008042C8 83C404 add esp,$04

Unit3.pas.30: TestArray := [];
008042CB 8D45F8 lea eax,[ebp-$08]
008042CE 8B1568428000 mov edx,[$00804268]
008042D4 E81390E2FF call $0062d2ec // System._DynArrayClear

Unit3.pas.31: SetLength(TestArray, 0);
008042D9 8D45F8 lea eax,[ebp-$08]
008042DC 8B1568428000 mov edx,[$00804268]
008042E2 E80590E2FF call $0062d2ec // System._DynArrayClear

Unit3.pas.32: TestArray := nil;
008042E7 8D45F8 lea eax,[ebp-$08]
008042EA 8B1568428000 mov edx,[$00804268]
008042F0 E8F78FE2FF call $0062d2ec // System._DynArrayClear
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 21:06 Uhr)
  Mit Zitat antworten Zitat