종료자 & using문에 관한 질문

안녕하세요, 종료자에 관해 공부하다 궁금한 점이 있어서 질문드립니다.

FIleStream은 Stream에서 IDisposable을 상속받아서 using을 통해 Dispose()메서드를 호출한다고 이해했습니다.

하지만 문제는 아래에서 이해가 안갑니다.

image

해당 줄 StreamWriter 의 경우에도 Writer가 IDisposable을 상속받고 있는데 이친구는 flush() 만 호출해서 비우기만 한거같습니다. 혹시 밖의 using문이 종료되면서 인자로 사용한 fs가 종료되니 sw도 같이 종료되는 형태인가요?

아니면 따로 종료를 하지 않은 건가요?
만약, 종료되지 않은 것이라면 StreamWriter 또한 using을 써서 작성해야할까요?
감사합니다.

2개의 좋아요

FileStream 객체인 fs와 StreamWriter 객체인 sw는 별도의 객체입니다.
생성자 인수로 넘겨진 fs의 경우 sw 객체 내부의 필드에 할당되어 사용되기 때문에 fs 객체에서 Dispose 호출되더라도 sw 객체는 Dispose 과정이 진행되지 않습니다.

메모리 누수 막기 위해서는 sw도 using문을 이용하는 것을 권장 드립니다.

6개의 좋아요

답변감사합니다!

2개의 좋아요