ใช่มีการรั่วไหลขึ้นอยู่กับว่าคุณกำหนด LEAK ไว้อย่างไรและคุณหมายถึง LATER เท่าไร ...
หากโดยการรั่วไหลคุณหมายถึง "หน่วยความจำยังคงถูกจัดสรรไม่พร้อมใช้งานแม้ว่าคุณจะใช้งานเสร็จแล้วก็ตาม" และหลังจากนั้นคุณหมายถึงเมื่อใดก็ได้หลังจากเรียกว่าทิ้งแล้วใช่อาจมีการรั่วไหลแม้ว่าจะไม่ถาวร (เช่นสำหรับ อายุการใช้งานรันไทม์ของแอปพลิเคชันของคุณ)
หากต้องการเพิ่มหน่วยความจำที่มีการจัดการที่ใช้โดย MemoryStream คุณต้องยกเลิกการอ้างอิงโดยลบการอ้างอิงไปยังหน่วยความจำนั้นจึงจะมีสิทธิ์ได้รับการรวบรวมขยะทันที หากคุณทำสิ่งนี้ไม่สำเร็จแสดงว่าคุณสร้างการรั่วไหลชั่วคราวตั้งแต่เวลาที่ใช้งานเสร็จจนกระทั่งการอ้างอิงของคุณอยู่นอกขอบเขตเนื่องจากในระหว่างนี้หน่วยความจำจะไม่พร้อมสำหรับการจัดสรร
ประโยชน์ของคำสั่งการใช้ (เรียกง่ายๆว่า dispose) คือคุณสามารถประกาศการอ้างอิงของคุณในคำสั่งใช้ เมื่อคำสั่งการใช้งานเสร็จสิ้นไม่เพียง แต่ถูกเรียกว่าทิ้งเท่านั้น แต่การอ้างอิงของคุณยังอยู่นอกขอบเขตทำให้การอ้างอิงเป็นโมฆะอย่างมีประสิทธิภาพและทำให้วัตถุของคุณมีสิทธิ์ได้รับการรวบรวมขยะทันทีโดยไม่ต้องจำไว้ว่าต้องเขียนโค้ด "reference = null"
แม้ว่าความล้มเหลวในการยกเลิกการอ้างอิงบางสิ่งในทันทีไม่ใช่การรั่วไหลของหน่วยความจำแบบ "ถาวร" แบบคลาสสิก แต่ก็มีผลเช่นเดียวกัน ตัวอย่างเช่นหากคุณเก็บข้อมูลอ้างอิงไปยัง MemoryStream (แม้ว่าจะเรียกว่า dispose แล้วก็ตาม) และต่อไปอีกเล็กน้อยในวิธีการของคุณคุณพยายามจัดสรรหน่วยความจำเพิ่มเติม ... หน่วยความจำที่ใช้โดยสตรีมหน่วยความจำที่ยังคงอ้างอิงของคุณจะไม่สามารถใช้งานได้ ถึงคุณจนกว่าคุณจะลบล้างข้อมูลอ้างอิงหรือมันออกไปนอกขอบเขตแม้ว่าคุณจะเรียกว่าทิ้งและใช้งานเสร็จแล้วก็ตาม