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

  • kylediablo

    kylediablo

    8 Ocak 2007
  • Palmundo Ec

    Palmundo Ec

    11 HAZİRAN 2009
  • sinumatic

    sinumatic

    19 Aralık 2006