Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

1

02.03.2006, 02:56

Array löschen (C#)

Hi,

wie lösch ich in C# ein Array. Da gibts zwar new, aber kein delete[] (auch kein delete)!!

Ich weiß das bei C# auch so ein Garbage Collector sein Unwesen treibt, aber ich will in einer Funktion mein Array komplett auf null setzen (nicht die Werte!!)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public bool searchData()
        {
            //////////////////////////////////////////////////////////////////////////

            // RESULT ARRAY LÖSCHEN

            //////////////////////////////////////////////////////////////////////////


            for (int i = 0; i < _logFile.Data.Length; i++)
            {
                // Hier kommt der such algo noch rein

            }

            if (_result == null)
                return false;
            else
                return true;
        }


ich weiß nicht ob das Array mit folgender anweisung gelöscht wird, oder ob ich dann ein Memory Leak hab.

C-/C++-Quelltext

1
_result = null
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

riCo

Treue Seele

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

2

02.03.2006, 07:19

Soweit ich weiss musst du das gar nicht löschen, dass macht der garbage collector für dich alles. Mehr als NULL setzen kannst du nicht.
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

02.03.2006, 10:06

Naja, das Memory-Leak wird doch dann vom Garbage-Collector beseitigt. Wenn das ein "richtig großes" Array war und Du willst, dass der Speicher sofort wieder freigegeben wird, mach doch folgendes:

C-/C++-Quelltext

1
2
_result = null;
System.GC.Collect();

Es wird also nicht gewartet, bis der Garbage-Collector von alleine darauf kommt, mal aufzuräumen, sondern Du zwingst ihn dazu...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

02.03.2006, 11:58

Allerdings kann das recht lange dauern. Diesen Aufruf sollte man also nur dann machen, wenn es wirklich sehr viel Speicher ist.

riCo

Treue Seele

Beiträge: 165

Beruf: Student

  • Private Nachricht senden

5

02.03.2006, 12:15

Ich hab 1 großes Projekte mit C# entworfen und Arrays mit mehrere tausend Indizes(Mehrzahl von Index!?) im Speicher gehalten. Der GC ist eigentlich recht zuverlässig, ich hatte keinerlei Probleme. Zugegebenermaßen musste ich mich damit auch erst anfreunden, dass der GC das automatisch macht und man relativ wenig Einfluss darauf hat. Nicht zu lange mit C# programmieren, sonst werden die C++ Programme immer langsam, weil man das schnell mal vergisst. ;)


edit:
Auf www.mycsharp.de gibt es eine kleine Einführung in DX Programmierung unter C#.
Wir leben alle unter dem Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.

Sheddex

unregistriert

6

02.03.2006, 12:22

Das Wort Indizes ist korrekt, zumindest verwendet das David so in seinem Buch. Wenn's falsch ist darfst du ihm die Schuld geben :P

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

7

02.03.2006, 15:54

thx
Dann mach ich das mit dem Garbagecollector mal so wie oben beschreiben. Mein Array hat übrigens >50000 Indizes ^^

Ich programmier mit Windows Forms in C# weil managed C++ voll bescheiden aussieht. da ist C# angenehmer.

Sonst progg ich in C++, also Spiele und so.

Ich schreib gerade ein programm mit dem man die Logdateien von einem Apache Server analysieren kann. Wenn man die logdatei nicht immer mal wieder löscht kann die schon groß werden ^^
Verlierer jammern immer von wegen ihr bestes!
Sieger gehen nach Hause und vögeln die Ballkönigin!

Werbeanzeige