CheckPointer

함수는 개체 포인터의 유형을 반환.

ENUM_POINTER_TYPE  CheckPointer(
   objectanyobject      // 개체 포인터
   );

매개변수

anyobject

[in]  개체 포인터.

값을 반환

ENUM_POINTER_TYPE 열거에서 값을 반환.

주의

잘못된 포인터를 호출 시도로 인해 프로그램의 심각한 종료가 발생합니다. 그렇기 때문에 포인터를 사용하기 전에 CheckPointer 함수를 호출해야 합니다. 다음과 같은 경우 포인터가 잘못될 수 있습니다:

  • 포인터가 NULL과 같음;
  • 개체가 삭제 연산자를 사용하여 삭제.

이 기능은 포인터 유효성 검사에 사용할 수 있습니다. 값이 0이 아닌 경우 포인터가 액세스에 사용될 수 있음을 보증합니다.

포인터의 유효성을 빠르게 확인하려면 "!" 연산자를 사용할 수도 있습니다. () CheckPointer 함수의 묵시적 호출을 통해 이를 확인합니다.

예를 들어:

//+------------------------------------------------------------------+
//| 요소를 삭제하여 목록 삭제                                           |
//+------------------------------------------------------------------+
void CMyList::Destroy()
  {
//--- 루프에서 작업하기 위한 서비스 포인터
   CItem* item;
//--- 루프를 통해 동적 포인터를 삭제를 시도
   while(CheckPointer(m_items)!=POINTER_INVALID)
     {
      item=m_items;
      m_items=m_items.Next();
      if(CheckPointer(item)==POINTER_DYNAMIC)
        {
         Print("Dynamic object ",item.Identifier()," to be deleted");
         delete (item);
        }
      else Print("비동적 개체 ",item.Identifier()," 삭제될 수 없습니다");
     }
//---
  }

추가 참조

개체 포인터, 개체 포인터 확인, 개체 삭제 연산자 삭제