Artentus schrieb:
Das bedeutet im Klartext, jede dieser Instanzen, die du erstellst, muss irgendwann mal mit Dispose oder mit einem Using-Block freigegeben werden, ansonsten läuft dir dein Speicher zu.
Als ich über IDisposeable gemeckert hab, hieß es Dispose() wird automatisch im Finalizer aufgerufen. Wenn dem so ist, wird nach zerstören der Instanz auch der unverwaltete Speicher freigegeben. Was ist denn nun richtig?
Hey,
ich wundere mich bis heute über IDisposeable. Imho ists absolut unnötig und ich verstehe nicht wieso ich in einer Hochsprache noch Speicher manuell freigeben muss. Normalerweise ist es so konzipiert, dass man im Finalizer den unverwalteten Speicher freigibt und um diesen gezielt eher freigeben zu können (die Instanz liegt ja auf dem verwalteten Heap und wird vom GC irgendwann dynamisch getillt), wird Dispose() aufgerufen. Wobei dies auch im Finalizer getan wird, so wäre eine ein expliziter Aufruf unnötig, wenn man den Speicher nicht früher freigeben wollte. Hätte man nun einen expliziten Aufruf des Destruktors/Finalizers möglich gemacht und entsprechend dann die Entsorgung durch den GC implementiert, wäre das Interface absolut unnötig. Sehe ich das richtig?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Gonger96“ ()