Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Speicher manuell reservieren
[r2d2] - Di 28.10.03 03:45
Titel: Speicher manuell reservieren
Hi
Wie kann man den Platz für eine Variable selbst reservieren¿ Normalerweise reserviert den Delphi ja beim Programmstart automatisch, das will ich aber nicht, ich will ihn wärend der laufzeit reservieren. Mir fällt als einzige Lösung ein, eine array-Variable mit variabler Länge zu erstellen, die nimmt ja erst dann Platz ein, wenn ihre Länge festgelegt wird. Es muss aber doch eine bessere Lösung geben.
thx :roll:
Delete - Di 28.10.03 06:10
Warum willst du das nicht?
Einzige Möglichkeit, die ich sehe, wäre selber einen Speichermanager zu schreiben. Viel Spaß.
Das was du geschrieben hast, gilt übrigens nur für globale Variablen. Da man mit selbigen eh sehr sparsam umgehen sollte, vermeiden wo es nur geht, sehe ich eigentlich kein Problem, dass sie unnötig Speicher brauchen.
Lokale Variablen belegen nur Speicher, wenn das Unterprogramm aufgerufen wird und verschwinden wieder aus ihm, wenn das Unterprogramm verlassen wird.
Motzi - Di 28.10.03 09:05
Für sowas was du meinst verwendet man normalerweise Pointer - ist in der Regel nur sinnvoll wenn man dyn. Speicher allozieren will weil erst zur Laufzeit feststeht wieviel Speicher benötigt wird. Schau dir vielleicht mal mein Pointer-Tutorial auf
http://www.x-spy.net/personal an...
[r2d2] - Di 28.10.03 13:56
Ich hab ein 500*500*500-Array, von dem aber nur einige wenige Felder Daten enthalten. Selbst wenn alle Felder nur vom Typ Pointer sind, belegen sie ja aber schon Speicher, und zwar nicht zu knapp. Ich will also erreichen, dass nur die Felder Speicherplatz belegen, die auch wirklich Daten enthalten. Mit einem dynamischen Array müsste das doch gehen, oder?
G-man - Di 28.10.03 17:21
Also, wenn du ein Problem mit dem Belegen von Speicher hast, kannste das auch mit Assembler lösen. Ist sowieso efektiver.
Klabautermann - Di 28.10.03 17:53
In deinem Fall würde ich mir einer Verketteten Liste (oder vom nir aus auch einem Dynamischen Array) Abreiten und nur für die Elemente, welche Datensätze anlegen.
Ein Datansatz müsste dan inetwa so aussehen:
Delphi-Quelltext
1: 2: 3: 4:
| tMyData=Record x, y, z : Word; Nutzdaten : String; end; |
Wenn du dann z.B. 5 Solcher Datensätze hast, dan erzeugst du ein DynArray mit 5 Feldern von den oben genanten Typ.
Gruß
Klabautermann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!