out-proc COM 서버에서 나는 CoRegisterClassObject()
으로 전달할 클래스 팩토리가 필요합니다. CreateInstance()
은 new
을 사용하여 개체 인스턴스를 만들고 저장된 데이터가 필요하지 않습니다. LockServer()
은 출고시 인스턴스에 특정한 공유 잠금 카운터를 수정하지 않습니다.글로벌 개체를 COM 클래스 팩토리로 사용하고 있습니까?
그래서 실제로 팩토리에 뚜렷한 데이터를 저장할 필요가 없으며 하나의 객체 만 있으면 괜찮습니다. 또한 객체 수명을 돌보고 싶지도 않습니다. 내가 (생성자에서 1 refcount는 세트) 전역 변수로 공장을 선언 유혹하고 있습니다 이유입니다 :
내가delete this
Release()
내부에 더 이상 만족 해요 그렇게되면
//Server.cpp
CMyFactory factory;
- 그 코드해야 (refcount는 1에서 시작하고 결코 0에 도달하지 않습니다.) 실행되지 않으면 정의되지 않은 동작이 발생합니다. 그래서 공장에서 심판 카운터를 제거하고이 같은 AddRef()
및 Release()
를 구현하는 생각 :
ULONG CMyFactory::AddRef()
{
return 1;
}
ULONG CMyFactory::Release()
{
return 1;
}
그러니 그냥 아무 부작용이 없습니다 참조 횟수가 더 delete this
없습니다.
설명 된 구현이 합법적일까요? 문제가 발생합니까?