c# using문 사용한 메모리 관리

개발자 이야기

c# using문 사용한 메모리 관리

kilius 2023. 3. 24. 18:25
728x90
반응형

C#에서 using 문은 일회용 개체가 사용하는 메모리를 관리하는 편리한 방법입니다. using 블록 내에서 일회용 객체를 선언하면 C# 컴파일러는 예외가 발생하더라도 블록이 종료될 때 객체가 적절하게 폐기되도록 하는 코드를 생성합니다.

다음은 C#에서 메모리를 관리하기 위해 using 문을 사용하는 방법의 예입니다.

class MyObject : IDisposable
{
    private bool disposed = false;

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing)
            {
                // Dispose of managed resources here
            }

            // Dispose of unmanaged resources here

            disposed = true;
        }
    }

    // Finalizer
    ~MyObject()
    {
        Dispose(false);
    }
}

 

using (var myObject = new MyObject())
{
    // use myObject here
}

 

이 예제에서는 using 블록 내부에 MyObject 인스턴스를 선언합니다. 블록이 종료되면 MyObject의 Dispose() 메서드가 자동으로 호출되어 MyObject가 사용하는 모든 리소스가 제대로 해제되도록 합니다.


MyObject 클래스는 Dispose() 메서드가 있어야 하는 IDisposable 인터페이스를 구현합니다. Dispose() 메서드 내에서 객체가 이미 폐기되었는지 여부를 확인한 다음(리소스를 여러 번 해제하지 않도록) 객체가 사용 중인 관리되거나 관리되지 않는 리소스를 해제합니다.


'IDisposable' 인터페이스를 구현하고 'using' 문을 사용하면 일회용 개체가 적절하게 관리되고 메모리가 적시에 해제되어 메모리 누수 및 기타 문제를 방지할 수 있습니다.

 

 

 

 

 

 

728x90
반응형