다음을 통해 공유


참조 계산

COM 자체는 개체가 더 이상 사용되지 않는다고 생각할 때 자동으로 메모리에서 개체를 제거하려고 시도하지 않습니다. 대신 개체 프로그래머가 사용되지 않는 개체를 제거해야 합니다. 프로그래머가 참조 횟수에 따라 개체를 제거할 수 있는지 여부를 결정합니다.

COM은 IUnknown AddRefRelease 메서드를 사용하여 개체에 대한 인터페이스의 참조 수를 관리합니다. 이러한 메서드를 호출하는 일반적인 규칙은 다음과 같습니다.

  • 클라이언트가 인터페이스 포인터 AddRef 를 받을 때마다 인터페이스에서 호출해야 합니다.

  • 클라이언트가 인터페이스 포인터 사용을 완료할 때마다 호출 Release해야 합니다.

간단한 구현에서 각 AddRef 호출은 증가하며 각 Release 호출은 개체 내의 카운터 변수를 감소합니다. 개수가 0으로 반환되면 인터페이스에 더 이상 사용자가 없으며 메모리에서 자유롭게 제거할 수 있습니다.

개별 인터페이스가 아닌 개체에 대한 각 참조가 계산되도록 참조 계산을 구현할 수도 있습니다. 이 경우 각각 AddRef 개체 Release 의 중앙 구현에 대한 대리자를 호출하고 Release 참조 수가 0에 도달하면 전체 개체를 해제합니다.

참고 항목

연산자를 CComObject사용하여 -derived 개체를 생성할 new 때 참조 수는 0입니다. 따라서 -derived 개체를 AddRef 성공적으로 만든 CComObject후에 호출해야 합니다.

참고 항목

COM 소개
참조 계산을 통해 개체 수명 관리