Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Dynamische Arrays (mal wieder)

  Alt 22. Nov 2013, 20:18
Es geht aber auch nur, weil die das CopyOnWrite bei diesen dynamischen Arrays "kaputt" ist.

Im Prinzip wird beim Entritt in diese Methode, da kein CONST, die Referenzzählung erhöht.
Beim Schreibzugriff auf das Feld müsste aber gemerkt werden, daß hier RefCount <> 1 ist und somit müsste vor dem Schreibzugriff eine Kopie erstellt werden, wo dann erst reingeschrieben wird.

Und ich hoffe immernoch, daß dieser Fehler, auch nach jahrzehnten, irgendwann mal repariert wird,
wobei ich jetzt nicht sagen kann, ob er das nicht schon wurde ... zumindestens in den Compilern für OSX, iOS und Android.

Delphi-Quellcode:
var
  A, B: TIntegerDynArray;
begin
  SetLength(A, 1);
  A[0] := 1;
  B := A; // B := Copy(A);
  B[0] := 2;
  WriteLn(A[0], ' ', B[0]); // 2 2
  ReadLn;
end.
Mit dem Copy-Bugfix "1 2".
$2B or not $2B

Geändert von himitsu (22. Nov 2013 um 20:22 Uhr)
  Mit Zitat antworten Zitat