728x90
반응형
728x90
반응형
728x90
반응형

SAFEARRAY 사용법 정리

  • SAFEARRAYCOM 프로그래밍에서 사용되는 배열 구조체로, 다양한 데이터 타입을 담을 수 있습니다.
  • 아래는 SAFEARRAY를 생성하고 삭제하는 방법을 설명한 예제입니다.

    1. SAFEARRAY 생성:
    • 1부터 n까지의 정수를 담는 배열을 생성하려면, SAFEARRAY 포인터와 SAFEARRAYBOUND 구조체를 사용합니다.

    c

    SAFEARRAY *psa = NULL;
    SAFEARRAYBOUND bound[1];
    
    bound[0].lLbound = 1;      // 배열의 시작 인덱스 설정
    bound[0].cElements = 8;    // 배열의 요소 개수 설정
    
    psa = SafeArrayCreate(VT_I2, 1, bound);
    if (psa == NULL) {
        // 메모리 부족 등의 이유로 배열 생성 실패
        throw ERROR_NOT_ENOUGH_MEMORY;
    }
    
    • 위 코드에서 VT_I2는 배열의 요소 타입이 2바이트 정수(short)임을 나타냅니다.
    • SafeArrayCreate 함수는 지정된 타입과 경계를 가진 SAFEARRAY를 생성합니다.

    1. SAFEARRAY 사용:
    • 생성한 SAFEARRAY를 사용하여 필요한 작업을 수행합니다.

    c

    // 배열 요소에 접근하거나 값을 설정하는 코드 작성
    

    1. SAFEARRAY 삭제:
    • 사용이 끝난 SAFEARRAY는 메모리 누수를 방지하기 위해 반드시 삭제해야 합니다.

    c

    HRESULT hr = SafeArrayDestroy(psa);
    if (FAILED(hr)) {
        // 배열 삭제 실패
        throw hr;
    }
    
    • SafeArrayDestroy 함수는 SAFEARRAY를 삭제하고, 관련된 메모리를 해제합니다.

  • 이러한 방식으로 SAFEARRAY를 생성하고 사용한 후 적절하게 삭제하여 메모리 관리를 수행할 수 있습니다.
728x90
반응형

+ Recent posts