.NET MemoryStream의 메모리 누수
질문:
. NET에서 메모리를 방지하려면 수동으로 닫아야 합니까? 누출?
코드 예:
MemoryStream foo() { MemoryStream ms = new MemoryStream(); // write stuff to ms return ms; } void bar() { MemoryStream ms2 = foo(); // do stuff with ms2 return; }
답변:
아니요, 수동으로 닫을 필요는 없습니다. 이 특정 코드 예제에서는 MemoryStream입니다. MemoryStream은 foo() 메서드 끝에서 범위를 벗어나면 자동으로 삭제됩니다.
설명:
MemoryStream 클래스는 IDisposable 인터페이스를 구현합니다. 관리되지 않는 리소스를 해제하는 Dispose() 메서드를 제공합니다. 그러나 현재 구현에서는 MemoryStream이 관리되지 않는 리소스를 할당하지 않습니다. Dispose()를 호출해도 MemoryStream에서 사용하는 메모리가 더 빨리 정리되지 않습니다.
관리되지 않는 리소스가 제대로 해제되도록 하기 위해 일회용 개체에 대해 Dispose()를 호출하는 것이 일반적으로 좋습니다. 그러나 MemoryStream의 경우 이 특정 코드 예제에서는 꼭 필요한 것은 아닙니다.
그러나 다음과 같은 경우 Dispose()를 호출하는 것이 좋습니다.
위 내용은 누출을 방지하려면 .NET의 MemoryStream을 수동으로 닫아야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!