Seite 1 von 1

ClearStructure bei Struktur mit List

Verfasst: 17.07.2012 18:06
von Josh
Ein ähnliches Thema hatte ich schon mal. Aber gibt ClearStructure auch Listen frei, die von InitializeStructure zugewiesen werden. In der Hilfe steht zwar, dass die bei InitializeStructure initialisiert werden, aber bei ClearStructure steht nichts, dass die Listen auch wieder freigegeben werden
InitializeStructure initialisiert den angegebenen strukturierten Speicherbereich. Dies ist nützlich, wenn die Struktur dynamische Objekte wie Arrays, Listen oder Maps enthält, welche intern von PureBasic zugewiesen werden müssen. 'Struktur' ist der Name der Struktur, welche zum Durchführen der Initialisierung verwendet werden soll. Es gibt keine interne Überprüfung, um sicherzugehen, dass die Struktur zum Speicherbereich passt. Diese Funktion ist nur für fortgeschrittene Anwender und sollte mit Vorsicht verwendet werden.
ClearStructure gibt den Speicher eines strukturierten Speicherbereichs frei. Dies ist nützlich, wenn die Struktur Strings beinhaltet, welche intern von PureBasic allokiert wurden. 'Struktur' ist der Name der Struktur, welche zum Ausführen des Löschens verwendet werden soll. Es gibt keine interne Überprüfung, um sicherzustellen, dass die Struktur zum Speicherbereich passt. Diese Funktion ist nur für fortgeschrittene Anwender und sollte mit Bedacht verwendet werden.
Danke
Josh

Re: ClearStructure bei Stuktur mit List

Verfasst: 17.07.2012 18:10
von PMV
Es ist ein Ersatz für ClearList(). Es wird der
Speicher freigegeben, der zur Struktur gehört und
die Elemente selber. Dazu gehören auch die
Meta-Daten einer Liste, die von PB verwaltet wird.

MFG PMV

Edit: nen paar Buchstaben gelöscht :mrgreen:

Re: ClearStructure bei Stuktur mit List

Verfasst: 17.07.2012 18:14
von STARGÅTE
Ja tut sie.

Daher sollte man aufpassen, wenn man strukturierte Variablen mit Clear löscht, dass die Liste dann nicht leer ist, sondern komplett weg, also ein InitializeStructure nötig ist.

@PMV: Doch auch die Elemente selber werden freigegeben (zum überschreiben freigegeben, der Inhalt ist noch da).

Re: ClearStructure bei Stuktur mit List

Verfasst: 17.07.2012 18:20
von PMV
Darauf achtet ClearStructure() wirklich? Da ist es wohl garnicht mal so
performan wie ich immer dachte ... muss ich mir merken. :oops:
Dann gilt das wohl auch für Maps und Arrays.

MFG PMV

Re: ClearStructure bei Stuktur mit List

Verfasst: 17.07.2012 18:26
von STARGÅTE
bei ClearStructure() werden die selben Funktionen zum freigeben ausgeführt, wie, als wenn man ein Elemente mit dieser Struktur aus einer großen Liste mit DeleteElement() löschen würde.
Daher ist es ja inzwischen verboten Strings mit Zahlen oder Listen/Arrays/Map in StructureUnion zu mischen, weil sonst die falschen Funktionen aufgerufen werden könnten.