Wertvergelich von Strukturen?

Sunray

Erfahrenes Mitglied
Hi,
ich stolpere gerade über die automatische Speicherverwaltung von .NET.

In meinem Programm werden temporär sehr viele Objekte erstellt, die die Struktur eines Dateiformats darstellen (Nein, ich kann kein XML benutzen).
Sobald diese Struktur geladen ist, wird sie von meinem Programm optimiert, sprich: Informationen zusammen gefasst sowie nutzlose und z.T. leere Objekte entfernen. Und genau das ist das Problem. Ich kann .NET nicht befehlen, den Speicher freizugeben.

Deshalb bin ich zum Teil von Klassen auf Strukturen umgestiegen, weil diese leicher zu kontrollieren sind.

Allerdings habe ich ein Problem mit dem Vergleichen dieser Datentypen. Zwar kann ich sie mit der Compare Schnittstelle ausstatten aber ich weiss nicht, wie ich überprüfe, ob ein Wert Null(Nothing) ist.

P.S.: Ist für das .NET Framework 2.0 -> Operatorenüberladung gibts nun auch in VB.NET
 
Zuletzt bearbeitet:
Um die Speicherverwaltung kümmert sich der Garbage-Collector. Denn kannst Du zwar anwerfen, bringt aber recht wenig, weil dieser selbst genau weiß, wann er zu Laufen hat.

Stellt sich die Frage was genau Du machen willst? Denn bei Objekten verhält es sich so, dass sie markiert werden, wenn kein Verweis mehr auf sie zeigt und beim Nächsten Lauf des GCs werden diese dann aus dem Heap geworfen. That easy way out. Du brauchst Dich also um die Speicherverwaltung nicht zu kümmern.

Mit Strukturen wirst du das gleiche Problem haben. Du kannst nämlich den Stack auch nicht beeinflussen ;-)

Lösch die Referenzen wenn du ein Objekt nicht mehr benötigst und es wird von alleine entfernt.
 
Ja, der GC...

Bei Referenzobjekten wiess ich nur nie, ob ich wirklich alle Referenzen auf dieses Objekt "gelöscht" habe.

So wie du das gesagt hast, gibt es gar keine Möglichkeit ein Objekt manuell zu entfernen.

Bin jetzt dabei, mein Programm so umzuschreiben, dass Daten und Struktur intern getrennt gespeichert werden:

Ein Teil der Klassen beschreibt die Anordnung und enthält die nötigen Informationen um an die zentral gespeicherten Daten-Objekte zu kommen.
Komme bis jetzt sehr gut zurecht.

Danke für diese kleine Lektion in .NET.

Strukturen werden doch freigegeben, wenn die dazugehörige Variable ihren Gültigkeitsbereich verlässt oder nicht?
 
Zurück