- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Link
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
드럼치는 프로그래머
[API/MFC] BSTR 본문
BSTR을 자동화 타입에 사용되는 문자열의 자료형으로써 COM세계에서 문자열은 유니코드로 표현하도록 되어 있다.
<<BSTR의 형식>>
12 H E L L O W O R L D \0 -->제일 앞 4 byte는 문자열의 길이가 입력됨
CString의 AllocSysString멤버함수를 사용하면 CString형을 BSTR로 변환
반대로는 LPCWSTR변환 연산자 사용 하면 됨
ex) CString yunju =(LPCWSTR) bstr;
BSTR을 만들고 COM 개체 간에 전달할 때는 BSTR에서 사용하는 메모리 처리에 주의하여 메모리 누수를 방지해야 한다
BSTR이 인터페이스 내부에 있을 경우 사용한 메모리는 반드시 해제해야 한다.
그러나 BSTR 이 인터페이스 외부로 전달되는 경우에는 받는 개체에서 메모리를 관리.
다음의 예를 보자
- BSTR 인수가 필요한 함수를 호출할 때는 호출하기 전에 BSTR에 대한 메모리를 할당한 후 나중에 해제.
HRESULT IWebBrowser2::put_StatusText( BSTR bstr ); // shows using the Win32 function // to allocate memory for the string: BSTR bstrStatus = ::SysAllocString( L"Some text" ); if (bstrStatus == NULL) return E_OUTOFMEMORY; pBrowser->put_StatusText( bstrStatus ); // Free the string: ::SysFreeString( bstrStatus ); //...
- BSTR을 반환하는 함수를 호출할 때는 문자열을 직접 해제
HRESULT IWebBrowser2::get_StatusText( BSTR FAR* pbstr ); //... BSTR bstrStatus; pBrowser->get_StatusText( &bstrStatus ); // shows using the Win32 function // to freee the memory for the string: ::SysFreeString( bstrStatus );
- BSTR을 반환하는 함수를 구현할 때는 문자열을 할당만 하고 해제하지는 않음. 해당 함수를 받는 개체에서 메모리를 해제함
HRESULT CMyClass::get_StatusText( BSTR * pbstr )
{
try
{
//m_str is a CString in your class
*pbstr = m_str.AllocSysString( );
}
catch (...)
{
return E_OUTOFMEMORY;
}
// The client is now responsible for freeing pbstr.
return( S_OK );
}
//
[출처] http://blog.naver.com/yiyunju?Redirect=Log&logNo=150038857115
'★─Programing > ☆─API | MFC' 카테고리의 다른 글
[API/MFC] CString methods (0) | 2011.05.06 |
---|---|
[API/MFC] HRESULT와 LRESULT (0) | 2011.04.18 |
[API/MFC] CFileDialog 불러오기 저장하기 (0) | 2011.04.18 |
[API/MFC] 'const char [11]'에서 'LPCTSTR'(으)로 변환할 수 없습니다. (0) | 2010.02.26 |
[API/MFC] 윈도우, 윈도우 클래스, WNDCLASS 구조체 , WNDCLASSEX, SetClassLong, GetClassLong, GetClassLongPtr, SetClassLongPtr (0) | 2010.02.16 |
Comments