Schnelle Kopie von TList T?

9

Gibt es eine schnelle Möglichkeit, eine generische TList zu kopieren?

%Vor%

ist sehr langsam. Es scheint keine Möglichkeit zu geben, CopyMemory zu verwenden, da ich die Speicheradresse des internen Arrays nicht erhalten kann (was aus einem Informationsverschleierungspunkt offensichtlich ist). Ich vermisse etwas wie

%Vor%

verwendet das Wissen der internen Repräsentation, um die Leistung zu verbessern. Kann es getan werden?

    
jpfollenius 28.02.2012, 09:07
quelle

2 Antworten

9

Für das generische TList<T> ist es einfach nicht möglich, die gewünschte Funktion zu implementieren. Das liegt daran, dass der Inhalt von T mehr als eine einfache Speicherkopie enthalten kann. Wenn T verwaltete Typen (d. H. Zeichenfolgen, Schnittstellen usw.) enthält, müssen die Referenzzählungen für diese verwalteten Objekte inkrementiert werden.

  • Wenn Ihr T verwaltete Typen enthält, bezweifle ich, dass Sie viel besser als der Code, den Sie bereits haben, tun können.
  • Wenn Ihr T keine verwalteten Typen enthält, ist eine Speicherkopie möglich, aber Sie müssen Ihre eigene Klasse erstellen, um diese Liste zu kapseln, da TList<T> nicht geeignet ist.
David Heffernan 28.02.2012, 09:20
quelle
1

Sie können Speicher immer neu interpretieren.

%Vor%

Aber es ist sehr gefährlich

    
Jack128 28.02.2012 09:37
quelle

Tags und Links