다음을 통해 공유


midl_user_allocate 함수

midl_user_allocate 함수는 RPC 애플리케이션 개발자가 제공해야 하는 프로시저입니다. RPC 스텁 및 라이브러리 루틴에 대한 메모리를 할당합니다. midl_user_allocate 함수는 다음 프로토타입과 일치해야 합니다.

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

cBytes 매개 변수는 할당할 바이트 수를 지정합니다. OSF 호환성(/osf) 모드에서 컴파일하지 않는 한 클라이언트 애플리케이션과 서버 애플리케이션 모두 midl_user_allocate 함수를 구현해야 합니다. 애플리케이션 및 생성된 스텁은 할당된 개체를 관리하기 위해 직접 또는 간접적으로 midl_user_allocate 호출합니다. 예:

  • 클라이언트 및 서버 애플리케이션은 트리 또는 연결된 목록에서 새 노드를 만들 때와 같이 midl_user_allocate 호출하여 애플리케이션에 대한 메모리를 할당합니다.
  • 서버 스텁은 데이터를 서버 주소 공간으로 구분 해제할 때 midl_user_allocate 호출합니다.
  • 클라이언트 스텁은 [out] 포인터가 참조하는 서버에서 데이터를 경계 해제 할 때 midl_user_allocate 호출합니다. [in], [out] 및 [unique] 포인터의 경우 클라이언트 스텁은 입력 시 [unique] 포인터 값이 null이고 호출 중에 null이 아닌 값으로 변경되는 경우에만 midl_user_allocate 호출합니다. 입력에서 [unique] 포인터가 null이 아닌 경우 클라이언트 스텁은 연결된 데이터를 기존 메모리에 씁니다.

midl_user_allocate 메모리를 할당하지 못하면 null 포인터를 반환해야 합니다.

midl_user_allocate 함수는 8 바이트 정렬 포인터를 반환해야 합니다.

예를 들어 SDK(플랫폼 소프트웨어 개발 키트)와 함께 제공되는 샘플 프로그램은 C 함수 malloc 측면에서 midl_user_allocate 구현합니다.

void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
    return((void __RPC_FAR *) malloc(cBytes));
}

참고

RpcSs 패키지가 사용하도록 설정된 경우(예: [ enable_allocate] 특성을 사용한 결과) RpcSmAllocate 를 사용하여 서버 쪽에 메모리를 할당합니다. [enable_allocate]에 대한 자세한 내용은 MIDL 참조를 참조하세요.