String Array leeren?

Fridulin

Erfahrenes Mitglied
Hallo Leute,

ich hätte da noch einmal eine Frage an euch und zwar wie man ein String Array wieder leeren kann. Mein Problem ist nämlich, wenn ich mein Programm öfters durchlaufen lasse dann Müllt sich der Speicher immer weiter zu bis nachher die maximale Zahl erreicht ist und dann tut sich nichts mehr und das Programm hängt.
Code:
string [] arrZeilen = new string [1000];
Also so wie es jetzt ist auf 1000, kann ich mein Programm 3 mal durchlaufen lassen bis der Speicher wohl verbraucht ist und es hängt. Wenn ich die Zahl ändere dann läuft mein Programm öfters durch. Das hat bei mir richtig lange gedauert bis ich den Fehler gefunden hatte. Ich dachte bei jeden Programmablauf löscht er den vorhergeganngenen Inhalt des Arrays, weil er immer wieder ein neues Array instanziert.

Ich hoffe einer hat eine Lösung für mein Problem.
Viele Grüße und vielen Dank.
Fridulin
 

MFC openGL

Erfahrenes Mitglied
Code:
for(int i = 0; i<1000; i++)
   arrZeilen[i] = null;

Aber gibt sicher bessere Lösungen mit Hilfe des Garbage Collectors, würde da mal schaun.

Gruss

MFC OpenGL
 

zioProduct

Erfahrenes Mitglied
Also ich sag jetzt mal was, kann aber nicht dafür garantieren das es stimmt:
Das was du gemacht hast MFC ist für den GarbageCollecter, weill indem du die Werte auf null setzt, weiss der GC das diese Objekte nimmer gebraucht sind, du sagst es ihm also von Hand. Wenn du das aber über IDispose machst, schnallt er es irgend wie selber, das auch wenn die Werte nicht null sind, dass sie nimmer gebraucht werden, also löscht er sie, bei jedem aufruf von Dispose();.

Wie gesagt ohne gewähr, Norbert, wird mich besstimt verbessern, oder meine Aussage ganz verwerfen :)
 

MFC openGL

Erfahrenes Mitglied
Pech nur, das es für String kein Dispose zu geben scheint ;) Hab gerade mal nen Test gemacht, und bei mir gibts da keine Methode Dispose um den String ins Nirvana zu schicken...

Ja, und was ich gemacht habe ist auch für den GC, und wenn der GC dann merkt, er hat keinen Speicher, wird er mir den gefallen tun und den String löschen *hofft*

Gruss

MFC OpenGL
 

zioProduct

Erfahrenes Mitglied
Dispose sollte auch nicht zum String gehören... Wenn du von IDispose ableitest, musst du ne Funktion Dispose im Code haben, welcher du dann eine Anweisung geben musst, sprich sie wird ausgeführt.^

Aber ich sag besser nichts mehr, für den Fall das ich nur stuss erzähle :p
 

MFC openGL

Erfahrenes Mitglied
Dann müsstest du aber die von String ableiten, damit String das Dispose erhält...
glaube meine 2 Zeilen sind da komfortabler *g*

Aber Norbert ist online, gleich bekommen wir beide eins drüber *g*
 

MFC openGL

Erfahrenes Mitglied
Die ganze Klasse ?

Dann frag ich mich was dir das bringt ? Dann wird der String ja erst wieder gelöscht, wenn die Klasse gelöscht wird... Glaube kaum das das der Sinn war ;)

Aber was mir dann eben noch einfiel, man kann statt dem Array auch eine ArrayList nehmen, und dort die Werte speichern. Dann einfach am Ende ArrayList = null; und aus ist der Spuk ;)