BSTR 값을 Char*로 변경을 하기 위해서 ConvertBSTRToString 함수를 사용했는데 메모리 누수가 발생이 되었다.
ConvertBSTRToString 함수를 사용해서 리턴되는 Char*을 삭제를 해야 한다.
VARIANT vtProp;
//-----------------------------------------------------------------------
VariantInit(&vtProp);
hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
if (hr == S_OK)
{
char* pszChar = _com_util::ConvertBSTRToString(vtProp.bstrVal);
_temp = CString(pszChar);
delete[] pszChar;
TRACE(_T("Name : %s\n"), _temp);
}
VariantClear(&vtProp);
위와 같이 리턴 된 값을 사용하고 delete[]를 하면 누를 방지할 수 있다.
<참> https://www.codeproject.com/Articles/4829/Guide-to-BSTR-and-C-String-Conversions
'C++' 카테고리의 다른 글
safearray 값을 SafeArrayAccessData 이용해서 읽어 오는 방법 (0) | 2023.09.07 |
---|---|
ProcessID로 Handle 찾기 및 WM_COPYDATA 처리 문제 (0) | 2021.04.12 |
std::map에서 char array를 key로 사용하기 (0) | 2021.04.08 |
memcmp 바이트 Array 비교를 할 때 사용 (0) | 2021.03.31 |
pointer new, delete, 지역 pointer 변수 오류 (0) | 2017.03.28 |