Rumah >pembangunan bahagian belakang >C++ >Perlukah Saya Menutup MemoryStream .NET Secara Manual untuk Mengelakkan Kebocoran?
Memori Bocor dalam .NET MemoryStream
Soalan:
Apabila bekerja dengan MemoryStream dalam . NET, adakah perlu menutupnya secara manual untuk mengelakkan ingatan bocor?
Contoh Kod:
MemoryStream foo() { MemoryStream ms = new MemoryStream(); // write stuff to ms return ms; } void bar() { MemoryStream ms2 = foo(); // do stuff with ms2 return; }
Jawapan:
Tidak, tidak perlu menutup secara manual MemoryStream dalam contoh kod khusus ini. MemoryStream dilupuskan secara automatik apabila ia keluar dari skop pada penghujung kaedah foo().
Penjelasan:
Kelas MemoryStream melaksanakan antara muka IDisposable, yang menyediakan kaedah Dispose() untuk melepaskan sumber yang tidak terurus. Walau bagaimanapun, dalam pelaksanaan semasa, MemoryStream tidak memperuntukkan sebarang sumber yang tidak terurus. Memanggil Dispose() tidak akan membersihkan memori yang digunakan oleh MemoryStream dengan lebih pantas.
Secara amnya, adalah amalan yang baik untuk memanggil Dispose() pada objek pakai buang, kerana ia memastikan bahawa sebarang sumber yang tidak diurus dikeluarkan dengan betul. Walau bagaimanapun, dalam kes MemoryStream, ia tidak begitu diperlukan dalam contoh kod khusus ini.
Walau bagaimanapun, adalah dinasihatkan untuk memanggil Dispose() jika:
Atas ialah kandungan terperinci Perlukah Saya Menutup MemoryStream .NET Secara Manual untuk Mengelakkan Kebocoran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!