728x90
반응형
SAFEARRAY
는COM
프로그래밍에서 사용되는 배열 구조체로, 다양한 데이터 타입을 담을 수 있습니다.- 아래는 SAFEARRAY를 생성하고 삭제하는 방법을 설명한 예제입니다.
-
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를 생성합니다.
-
SAFEARRAY
사용:
- 생성한
SAFEARRAY
를 사용하여 필요한 작업을 수행합니다.
c
// 배열 요소에 접근하거나 값을 설정하는 코드 작성
-
SAFEARRAY
삭제:
- 사용이 끝난 SAFEARRAY는 메모리 누수를 방지하기 위해 반드시 삭제해야 합니다.
c
HRESULT hr = SafeArrayDestroy(psa); if (FAILED(hr)) { // 배열 삭제 실패 throw hr; }
SafeArrayDestroy
함수는 SAFEARRAY를 삭제하고, 관련된 메모리를 해제합니다.
- 이러한 방식으로
SAFEARRAY
를 생성하고 사용한 후 적절하게 삭제하여 메모리 관리를 수행할 수 있습니다.
728x90
반응형
'Windows' 카테고리의 다른 글
File System Functionality Comparison (마이크로소프트 문서 win32 깃허브) (0) | 2022.05.11 |
---|---|
[scoop] 윈도우즈에서 유닉스/리눅스 툴을 쉽게 설치하기 (0) | 2018.10.02 |
MultiByteToWideChar 함수로 멀티바이트 문자열을 유니코드로 변환하기 (0) | 2007.12.31 |
Windows Vista에서 UAC 권한 상승을 통한 SetLocalTime 함수 호출 테스트 (0) | 2007.07.12 |
DLU Dialog Units (0) | 2007.06.13 |