Ya ada sebuah kebocoran , tergantung pada bagaimana Anda mendefinisikan LEAK dan berapa banyak KEMUDIAN Anda maksud ...
Jika yang Anda maksud dengan kebocoran adalah "memori tetap dialokasikan, tidak tersedia untuk digunakan, meskipun Anda sudah selesai menggunakannya" dan yang terakhir Anda maksudkan kapan saja setelah memanggil buang, maka ya mungkin ada kebocoran, meskipun tidak permanen (mis. Untuk umur runtime aplikasi Anda).
Untuk membebaskan memori terkelola yang digunakan oleh MemoryStream, Anda perlu membatalkan referensi, dengan membatalkan referensi ke sana, sehingga memori tersebut memenuhi syarat untuk pengumpulan sampah segera. Jika Anda gagal melakukan ini, maka Anda membuat kebocoran sementara sejak Anda selesai menggunakannya, sampai referensi Anda keluar dari ruang lingkup, karena sementara itu memori tidak akan tersedia untuk alokasi.
Manfaat dari pernyataan using (lebih dari sekedar memanggil buang) adalah bahwa Anda dapat MENYATAKAN referensi Anda dalam pernyataan using. Ketika pernyataan using selesai, tidak hanya dispose dipanggil, tetapi referensi Anda keluar dari ruang lingkup, secara efektif meniadakan referensi dan membuat objek Anda memenuhi syarat untuk pengumpulan sampah segera tanpa mengharuskan Anda untuk mengingat untuk menulis kode "reference = null".
Meskipun tidak langsung membatalkan referensi bukanlah kebocoran memori "permanen" klasik, hal itu pasti memiliki efek yang sama. Misalnya, jika Anda menyimpan referensi ke MemoryStream (bahkan setelah memanggil buang), dan sedikit lebih jauh dalam metode Anda, Anda mencoba mengalokasikan lebih banyak memori ... memori yang digunakan oleh aliran memori yang masih direferensikan tidak akan tersedia kepada Anda sampai Anda membatalkan referensi atau keluar dari ruang lingkup, meskipun Anda menelepon buang dan selesai menggunakannya.