AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein SetLength / Getmem / AllocMem out of memory Problem
Thema durchsuchen
Ansicht
Themen-Optionen

SetLength / Getmem / AllocMem out of memory Problem

Ein Thema von greenmile · begonnen am 7. Okt 2009 · letzter Beitrag vom 9. Okt 2009
 
Benutzerbild von himitsu
himitsu

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

Re: SetLength / Getmem / AllocMem out of memory Problem

  Alt 8. Okt 2009, 10:36
Bei Google suchenverkettete Liste

das ganze nochmal kurz als Array ... zum Vergleich
Delphi-Quellcode:
TData = record
  name: String;
  typ: Integer;
  ...
end;

TAsArray = Array of TData;
eine einfach verkettete Liste
Delphi-Quellcode:
PListe = ^TListe;
TListe = record
  next: PListe;

  name: String;
  typ: Integer;
end;

var myList: PListe;
bei dieser verketten Liste ist es so, daß nur der Zeiger auf das erste Element in der Liste bekannt ist
und jede Element kennt dann seinen Nachfolger ... du kannst dich also vom ersten element aus zu allen anderen Elementen durchhangeln


und das wäre dann eine doppelt verkettete Liste
Delphi-Quellcode:
PListe = ^TListe;
TListe = record
  prev: PListe;
  next: PListe;

  name: String;
  typ: Integer;
end;

var myList_first: PListe;
    myList_last: PListe;
hier kennt dann jedes Element auch noch seinen Vorgänger ... das macht es dann einfacher diese Liste zu "editieren" (zu verändern, wie z.B. Einträge einzufügen oder zu entfernen)


Der Vorteil gegenüber dem Array ist dann einfach, daß diese Daten nicht stur alle in einer Reihe angeordnet sein müssen ... sie können sich also frei im verfügbaren Speicher verteilen und brauchen keinen gemeinsamen Speicherblock.


Was jetzt aber für dich eine "gute" Lösung wäre, das kommt darauf an, wie der Zugriff auf deine Daten aussieht, wie/ob diese auch mal verändert werden und vorallem welche und wieviele Daten du in jedem Element drinnen hast.

z.B. bei einem Array of String wäre es Schwachsinn dieses als verkettete Liste verwalten zu wollen, da so der Speicherverbrauch und auch der Verwaltungsaufwand wesentlich höher wäre, als beim Array.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz