SysAllocStringLen 메모리 해제

300x250

 

 

 

아래는 ANSI 문자열에서 유니코드로의 변환 방법코드다.(MultiByteToWideChar)

 

여기서 SysAllocStringLen를 사용해서 메모리 할당 하게되면

SysFreeString로 메모리를 해제 해야 메모리가 올라가지 않는다.

(옛날 코드 보면 SysFreeString 없이 사용하기도 하는데 메모리 반환이 언제되는지 모름)

 // sTime이란 ANSI 문자열을 bstr이란 이름의 유니코드(BSTR 타입) 변수로 변환
 char sTime[] = "유니코드 변환 예제";
 BSTR bstr;
 // sTime을 유니코드로 변환하기에 앞서 먼저 그 길이를 알아야 한다.
 int nLen = MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), NULL, NULL);
 // 얻어낸 길이만큼 메모리를 할당한다.
 bstr = SysAllocStringLen(NULL, nLen);
 
 // 이제 변환을 수행한다.
 MultiByteToWideChar(CP_ACP, 0, sTime, lstrlen(sTime), bstr, nLen);
 
// 필요없어지면 제거한다.
SysFreeString(bstr);

 

 

 

300x250

댓글()