Game Programming/자문자답

참조 카운트란 무엇인가?

Doanie 2022. 9. 15. 12:31

참조 카운트란 무엇인가?


참조 카운트 (Reference Counting)

동적으로 할당된 메모리 주소가 참조될 때마다 count를 1증가 시키고, 참조를 끊을 땐 1감소 시킴으로서 count를 체크하여 0이 될 경우 즉시 메모리를 헤제하는 방식이다. 기존의 알아봤던 스마트 포인터 중 shared_ptr이 참조카운트 방식으로 동작한다.

참조 카운트의 장점

▹ 메모리를 직접 해제하는 번거로움이 사라진다.

▹ 객체의 소유권을 공유할 수 있다.

▹ 빠르다

참조 카운트의 단점

순환 참조 문제가 있다.(A가 B를 참조, B가 A를 참조시 영원히 해제되지 않는 경우 발생)

참조회수는 너무 자주 바뀌는데 멀티 쓰레드 환경에서 사용 시 lock이나 atomic연산이 필요하다.


기존의 동적 메모리 할당 해제를 자동으로 해주는 가비지 콜렉터와 스마트 포인터를 알아보았었다. 이 참조 카운트는 가비지 콜렉터와 함께 자주 묶이는 부분이니 다시 한번 가비지 콜렉터도 상기시키면서 공부한 계기가 되었다.

https://doanhan.tistory.com/19

 

가비지 컬렉터와 스마트 포인터란 무엇인가?

가비지 컬렉터와 스마트 포인터란 무엇인가? 가비지 컬렌션은 무엇인가? 가비지 컬렉션(Garbage Collection)이라고 불리면 약어로 GC라고도 부른다. 메모리를 관리하는 방법 중에 하나로, 시스템에서

doanhan.tistory.com