본문 바로가기

가비지 컬렉션2

2. 메모리 누수 없는 C언어 프로그래밍 (2/3) - 레퍼런스 카운트 1부 앞선 포스트에서 C언어에서 메모리 누수를 피할 수 있는 두 가지 규칙을 소개하고, 규칙1 "가능하다면 메모리 할당과 해제는 한 코드 블록 안에서 한 번만"에 대해서 다뤘다. (www.kernelpanic.kr/34) 규칙1은 간단하고 강력하지만 규칙1을 적용할 수 없는 예외적인 상황들이 있다. 이 경우에 사용 가능한 방법이 규칙 2 "메모리 할당과 해제가 한 블록 이내에서 이뤄질 수 없다면 레퍼런스 카운터를 활용"이다. 이번 포스트에서는 어떤 경우에 규칙1을 적용할 수 없는지, 그리고 레퍼런스 카운터를 활용하는 방법에 대해서 다루도록 한다. (규칙1) 가능하다면 메모리 할당과 해제는 한 코드 블록 안에서 한 번만 (규칙2) 메모리 할당과 해제가 한 블록 이내에서 이뤄질 수 없다면 레퍼런스 카운트를 활용 .. 2021. 5. 5.
2. 메모리 누수 없는 C언어 프로그래밍 (1/3) - 메모리 할당과 해제는 한 블록에서 C언어에서 메모리 관리는 실력 여하를 막론하고 꽤나 골치아픈 주제이다. 프로그램 규모가 커지면 동적으로 할당된 메모리 개수가 늘어나게 되는데, 개발자도 사람인 이상 이처럼 할당된 메모리들의 생명주기를 하나도 빠짐없이 관리하는 것은 어렵기 때문이다. 따라서 C개발자들은 메모리 문제를 회피하기 위한 여러가지 테크닉들이 개발하였다. 이번 주제에서는 메모리 누수를 회피할 수 있는 두 가지 규칙과 몇 가지 테크닉들을 소개한다. 이 방법들을 모두 지킨다고 해서 메모리 누수 문제를 100%는 아니더라도 대부분의 메모리 누수 문제들을 피할 수 있다. 소개할 두 가지 규칙은 다음과 같다. 가능하다면 메모리 할당과 해제는 한 코드 블록 안에서 한 번만 메모리 할당과 해제가 한 블록 이내에서 이뤄질 수 없다면 레퍼런스 카운.. 2021. 4. 28.