Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: Speicherfreigabe mit Dispose

  Alt 11. Dez 2017, 22:11
Wäre es nicht besser, wenn Dispose hier eine Warnung ausgeben würde, wenn es einen untypisierten Pointer bekommt?
Es wäre besser Dispose gar nicht zu verwenden.
Manchmal kommt man nicht drum rum.

In diesem konkreten Falle allerdings durchaus. Dieser "Ringspeicher" ist nämlich alles andere als ein tatsächlicher Ringspeicher und TList zu verwenden ist von der Performance her unter Umständen ziemlich übel. Das Delete(IrgendwasMittendrin) kostet hier nämlich sehr viel Zeit.

Alternative wäre es ein TArray<T> oder ggfls. array[n..m] of T zu verwenden und sich dazu den Start- und den End-Index zu merken. Add/Remove aus dem Buffer beschränkt sich dann auf ein einfaches Einfügen der Daten mit abschließendem Inc() bzw. Dec() der entsprechenden Indexvariable. Dynamische Speicherreservierungen hättest du dann zur Laufzeit auch komplett keine mehr.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat