참조 계산
COM 자체는 개체가 더 이상 사용되지 않는다고 생각할 때 자동으로 메모리에서 개체를 제거하려고 시도하지 않습니다. 대신 개체 프로그래머가 사용되지 않는 개체를 제거해야 합니다. 프로그래머가 참조 횟수에 따라 개체를 제거할 수 있는지 여부를 결정합니다.
COM은 IUnknown
AddRef 및 Release 메서드를 사용하여 개체에 대한 인터페이스의 참조 수를 관리합니다. 이러한 메서드를 호출하는 일반적인 규칙은 다음과 같습니다.
클라이언트가 인터페이스 포인터
AddRef
를 받을 때마다 인터페이스에서 호출해야 합니다.클라이언트가 인터페이스 포인터 사용을 완료할 때마다 호출
Release
해야 합니다.
간단한 구현에서 각 AddRef
호출은 증가하며 각 Release
호출은 개체 내의 카운터 변수를 감소합니다. 개수가 0으로 반환되면 인터페이스에 더 이상 사용자가 없으며 메모리에서 자유롭게 제거할 수 있습니다.
개별 인터페이스가 아닌 개체에 대한 각 참조가 계산되도록 참조 계산을 구현할 수도 있습니다. 이 경우 각각 AddRef
개체 Release
의 중앙 구현에 대한 대리자를 호출하고 Release
참조 수가 0에 도달하면 전체 개체를 해제합니다.
참고 항목
연산자를 CComObject
사용하여 -derived 개체를 생성할 new
때 참조 수는 0입니다. 따라서 -derived 개체를 AddRef
성공적으로 만든 CComObject
후에 호출해야 합니다.