SORU
24 EKİM 2008, Cuma


Bir bellek sızıntısı bir MemoryStream eğer oluşturulmuş .NET kapalı değil mi?

Aşağıdaki kodu var:

MemoryStream foo(){
    MemoryStream ms = new MemoryStream();
    // write stuff to ms
    return ms;
}

void bar(){
    MemoryStream ms2 = foo();
    // do stuff with ms2
    return;
}

Ayrılmış olduğum MemoryStream bir şekilde bertaraf edilmesi için başarısız olacağı bir ihtimal daha var mı?

Eş inceleyin ben el ile bu kadar yakın ısrar var, ve eğer geçerli bir nokta var olup olmadığını söylemek için bilgi bulamıyorum.

CEVAP
24 EKİM 2008, Cuma


Hiçbir şey - en azından geçerli uygulama sızıntısı olmayacak.

Elden çağıran bellek MemoryStream tarafından kullanılan daha hızlı temizlemek olmaz.olabilir ya da sizin için yararlı olmayabilir aramadan sonra Okuma/Yazma aramalar için uygulanabilir olmaktan akışı durdurun.

Bunu o kadar eminsenizaslayenilgi size arama için herhangi bir zararı olmayacak stream de başka bir MemoryStream taşımak istiyorum. Ancak, genel olarak kısmen hiç çünkü eğer iyi bir uygulamadıryapınfarklı bir Akışı kullanmak için değiştirmek kolay yolu erken seçtin çünkü zor bulur, bir böcek tarafından ısırılmak istemiyorum. (Diğer taraftan, YAGNİ argüman var...)

Zaten yapacak başka nedeni yeni bir uygulamaolabilirAtın üzerinde serbest olacak kaynakları tanıtmak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013
  • My Name Is Jeff

    My Name Is J

    26 ŞUBAT 2008