c# GC

    [C#] 쓰레기 수집기 (Garbage Collector)

    [C#] 쓰레기 수집기 (Garbage Collector)

    1. 사전 학습 using System; class Program { public static void Foo() { int n2 = 0; // 1초 후 } static void Main() { int n1 = 0; // 1시간 경과 Foo(); } } Q. 누가 더 오래 살 수 있을까? 코드를 보기 전 위의 Case를 살펴보자. Case 1의 경우 사람의 경우이다. 사고를 제외하고 객관적으로 오래 살 수 있는건 A이다. 사람은 보통의 경우 젊은 사람이 더 오래 살 것이다. Case 2의 경우 프로그램의 경우이다. 위의 1번 Case는 최근에 태어난 사람이 오래 살게 되는데 프로그램은 어떨까? 위의 코드에서 Main에서 n1을 만들고 1시간이 경과한 후 Foo가 실행 됐다고 생각해보자. Foo를 호출해도..

    [C#] Dispose() 메소드

    [C#] Dispose() 메소드

    1. 핵심 정리 using System; using System.IO; class Program { static void Main() { int[] arr = new int[] {1, 2, 3, 4, 5}; FileStream fs = new FileStream("a.txt", FileMode.CreateNew, FileAccess.ReadWrite, FileShare.None); // ... fs.Dispose(); } } C와 C++은 위와 같이 new를 통해 자원을 할당하면 반드시 자원을 반납해야 한다. C#은 자동으로 메모리 관리를 해주기 때문에 new로 자원을 할당해도 반납하지 않아도 된다. 하지만 C#에서도 파일 같은 것을 오픈하면 Dispose를 통해 반납을 해주어야 한다. 왜 Dispose..