![]() |
Re: TList / dyn. Array - Was steckt dahinter?
Genau. Ein array ist in Delphi ersteinmal ein Pointer auf dem Stack (oder in einem Prozessorregister), der auf einen Bereich im Heap zeigt. Dieser Bereich hat eine feste Größe. Wenn man setlength aufruft, verändert der Speichermanager diese Größe. Überschneidet sich die neue Größe mit anderen Daten, wird das Array - glaube ich - an eine andere Stelle kopiert, die groß genug ist, und dann vergrößert.
Dass ein Array in Delphi eine verkettete Liste ist, ist eine Aussage, für die man einen Infolehrer erschießen sollte. Ich kenne keine Sprache, in der das so ist. |
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
Und um nun ganz sicher zu sein: Zitat:
Zitat:
|
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
Integer: Nein Record: Nein *was auch immer*: Wenn es ein String mit variabler Länge, eine Klasse oder ein dynamisches Array ist. Oder anders gesagt: Ein Datentyp, der irgendwie eine Finalisation benötigt, wenn ich mich nicht recht irre. Und bei statischen ist das auch nicht anders. Genaugenommen ist es nicht mal bei einer normalen Variable anders. |
Re: TList / dyn. Array - Was steckt dahinter?
Wunderbar...
Dann ist die Struktur eines dynamsiches Arrays also genau die gleiche wie die eines statischen Arrays und der einzige Unterschied liegt darin, dass die Speicherallokation dynamisch zur Laufzeit stattfindet (wobei aber auch immer ein zusammenhängender Speicherbereich genutzt wird)? P.S.: Sorry das ich mich hier andauernd rückversichere, aber ich habe meinen Lehrer komplett gegenteilig verstanden... |
Re: TList / dyn. Array - Was steckt dahinter?
ja richtig, es wird immer ein ausreichender speicherbereich verwendet, sofern du ausreichend speicher hast. im anderen fall bekommst du 'n out of memory error.
|
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
Zitat:
Das ist doch der einzige Vorteil gegenüber Klassen: Records sind Wertetypen. Also nochmal:
|
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
Ja - Die Struktur ist dieselbe. Dein Array fängt irgendwo im speicher bei Adresse X an und jedes weitere Element N liegt bei X+N*sizeof(ArrayElement) Der Unterschied liegt darin, dass beim Statischen Array deine Variable direkt den Wert X hat, beim dynamischen Array hast du einen Zeiger auf X. (Ich hoffe ich habe jetzt nicht wieder verwirrt.) |
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
|
Re: TList / dyn. Array - Was steckt dahinter?
Auch, und weil die Größe eben dynamisch ist, das ist ja nur über Zeiger zu realisieren.
|
Re: TList / dyn. Array - Was steckt dahinter?
Zitat:
wie das ansatzweise funktioniert, hat dir sirius kurz aufgezeigt. wobei nicht immer die grösse auch die grösse ist... da z.t. die zeiger wiederum auf eigene daten und/oder objekte zeigen können. aber das wollt ich ich meinen ersten post gar nicht erwähnen, um keine verwirrung zu stiften. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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-2025 by Thomas Breitkreuz