青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 126,  comments - 73,  trackbacks - 0
BSTR 設(shè)計對于 C++ 程序員好壞參半。一方面, BSTR 可以被用于大多數(shù)需要 OLECHAR 數(shù)組作為參數(shù)的函數(shù)。另一方面,不能用熟悉的 C/C++ 函數(shù)進(jìn)行對 BSTR 的分配、釋放和處理,例如 malloc, free, new, delete, lstrcat, and lstrlen 等函數(shù)不能用于處理 BSTR 。就像對接口指針和類指針的處理不一樣,對 BSTR 的處理和對 TCHAR* 的處理也不一樣。 BSTR 是一種 C 語言方式的類型定義方式,這種定義方式提高了 BSTR C++ 的應(yīng)用效率,但是也帶來了很多的潛在風(fēng)險,它使程序員失去了利用編譯器檢查潛在問題的機(jī)會。
1.2 ????? BSTR 使用基本規(guī)則
?
  • 在對 BSTR 進(jìn)行讀取操作的時候,可以把 BSTR 看作 OLECHAR 數(shù)組。 BSTR 可以用于 const wchar_t*( LPCTSTR/ LPCWSTR/ cosnt TCHAR*/ cosnt WCHAR* in Unicode project ) ,不能用于 需要 wchar_t* ( LPTSTR/ LPWSTR/ TCHAR*/ WCHAR* in Unicode project ) 的地方。
  • 如果有相應(yīng)的 BSTR 處理函數(shù),必須使用 BSTR 處理函數(shù),不要使用普通字符串函數(shù)。特別是一個 BSTR 包含多個字符串 ( 也就是,包含多個 0 結(jié)束符 ) 的情況。 在對 BSTR 進(jìn)行修改(包括創(chuàng)建和釋放時),必須使用 BSTR 的專用函數(shù)。主要要保證對字符長度前綴的正確修改。不要直接讀取 BSTR 的長度域,應(yīng)該使用 BSTR 處理函數(shù)計算長度。
?
String Manipulation Functions ????
Descriptions
SysAllocString
Creates and initializes a string.
SysAllocStringByteLen
Creates a zero-terminated string of a specified length.
SysAllocStringLen
Creates a string of a specified length.
SysFreeString
Frees a previously created string.
SysReAllocString
Changes the size and value of a string.
SysReAllocStringLen
Changes the size of an existing string.
SysStringByteLen
Returns the length of a string in bytes.
SysStringLen
Returns the length of a string.
?
  • NULL BSTR 的有效值。按照約定,它可以被看作含有 0 個字符的字符串。 BSTR 變量必須等于 NULL ,或者正確分配的 BSTR 指針。在改變 BSTR 變量的之前,必須釋放原來指向的 BSTR 不要把 BSTR 直接初始化成常量字符指針,例如, BSTR?bs = L””
  • Automation cache BSTR 使用的空間,以提高 SysAllocString/SysFreeString 的性能,會給測試發(fā)現(xiàn)問題帶來困難。如果可能推薦在調(diào)試時使用 Compuware DevPartner 7.x 及更高版本的工具。
?
1.3 ????? BSTR 參數(shù)使用
多數(shù)時候, BSTR 是被用于函數(shù)參數(shù)。關(guān)于 BSTR 參數(shù)的使用規(guī)則是 BSTR 類型的基礎(chǔ)。只有熟練掌握,才能分析 warpper 類或轉(zhuǎn)換函數(shù)的正確性。
?
? 基本原則:在給 by-reference[in/out] 參數(shù)賦一個新的值前,被調(diào)用者負(fù)責(zé)釋放。其他情況,都是調(diào)用者負(fù)責(zé)釋放。
?
調(diào)用者使用 BSTR 的規(guī)則如下:
·???????? 釋放被調(diào)用函數(shù)返回的 BSTR ,或者被調(diào)用函數(shù)通過 by-reference 返回的 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 );
?
·???????? 釋放通過 by-value 方式傳給其他函數(shù)的 BSTR.
//.h
HRESULT IWebBrowser2::put_StatusText( BSTR bstr );
?
//.cpp
// 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 );
//...
?
被調(diào)用者按照如下規(guī)則處理 BSTR
·???????? 如果一個 BSTR 參數(shù)是 by-reference 方式,在給參數(shù)賦新值之前, Free 以前的值。如果沒有給參數(shù)賦的新值,不要 Free 傳入值。
void RefreshBSTR(BSTR& bs)
// bs is an [in/out] parameter. BSTR* is the same
{
// using the bs here
Dosomething(bs);
// if (bs is about to be updated)
ASSERT(bs != NULL);
::SysReallocString(bs, _T(“NEW STRING”));
// SysReallocString will call SysFreeString and
// SysAllocString in sequence
// If bs is only [out] parameter, SysAllocString
// should be called here.
}
?
·???????? 不要 Free 通過 by-value 傳入的 BSTR
void SetBSTR(BSTR bs)
// bs is an [in] parameter. BSTR* is the same
{
// using the bs here
Dosomething(bs);
::SysFreeString(bs); //ERROR
}
?
·???????? 不要 Free 返回給調(diào)用者的 BSTR .
BSTR GetBSTR1()
{
BSTR bs = ::SysAllocString(_T(“test”));
::SysFreeString(bs); //ERROR
return bs;
}
?
void GetBSTR2(BSTR* pBs)
{
CComBSTR bs(_T(“test”));
*pBS = (BSTR) bs; //ERROR: pBS will be freed automatically
}
?
·???????? 如果需要保存?zhèn)魅氲?/span> BSTR ,被調(diào)用著需要用 SysAllocString() 生成一個新的副本,并保存。輸入的 BSTR 會被調(diào)用者釋放。
void MyClass::SetBSTR(BSTR bs)
{
//BSTR m_bs;
m_bs = bs; //ERROR
m_bs = ::SysReAllocString(bs);
}
·???????? 如果需要返回一個已經(jīng)存儲的 BSTR ,返回 BSTR 的一個拷貝。調(diào)用者釋放返回的 BSTR 拷貝。
void MyClass::GetBSTR(BSTR* pbs)
{
//BSTR m_bs;
*pbs = m_bs; //ERROR
*pbs = ::SysAllocString(m_bs);
}
?


From: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1486367

posted on 2007-01-26 16:06 我風(fēng) 閱讀(1372) 評論(0)  編輯 收藏 引用

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用鏈接

留言簿(12)

隨筆分類

隨筆檔案

文章檔案

相冊

收藏夾

C++

MyFavorite

搜索

  •  

積分與排名

  • 積分 - 329008
  • 排名 - 75

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            你懂的网址国产 欧美| 欧美在现视频| 国产精品一区二区三区四区五区| 麻豆久久婷婷| 欧美不卡视频一区| 欧美极品在线播放| 欧美视频中文字幕在线| 国产精品日韩二区| 国产一区激情| 91久久综合亚洲鲁鲁五月天| 亚洲日本中文字幕区| 中文欧美在线视频| 久久国产精品色婷婷| 欧美成人激情视频免费观看| 亚洲精品久久嫩草网站秘色 | 亚洲一区综合| 久久国产精品色婷婷| 麻豆成人在线| 国产精品久久久久久久久久尿| 国产欧美精品日韩| 亚洲第一黄色网| 亚洲一区精彩视频| 噜噜噜在线观看免费视频日韩| 亚洲精品字幕| 久久久xxx| 国产精品黄色| 亚洲欧洲精品一区二区精品久久久| 这里只有精品视频| 久热国产精品视频| 亚洲视频大全| 欧美肥婆bbw| 国产日韩精品一区| 一区二区三区鲁丝不卡| 久久夜色精品国产亚洲aⅴ| 日韩一级精品视频在线观看| 久久久美女艺术照精彩视频福利播放 | 免费久久99精品国产自| 国产精品综合视频| av72成人在线| 亚洲国产成人一区| 久久蜜桃av一区精品变态类天堂| 欧美日韩综合一区| 亚洲精品小视频在线观看| 欧美精品一区二区在线观看| 国产乱子伦一区二区三区国色天香 | 中文精品视频一区二区在线观看| 欧美电影美腿模特1979在线看| 亚洲一区二区三区777| 免费亚洲网站| 1024精品一区二区三区| 久久精品91久久香蕉加勒比| 亚洲视频在线一区观看| 欧美日韩国语| 一区二区黄色| 亚洲精品乱码视频| 欧美肥婆在线| 日韩午夜三级在线| 91久久嫩草影院一区二区| 久久女同精品一区二区| 黄色日韩精品| 美女图片一区二区| 久久一二三区| 91久久国产自产拍夜夜嗨| 麻豆freexxxx性91精品| 久久免费视频网| 亚洲第一伊人| 欧美大片免费观看| 麻豆精品在线观看| 亚洲国产经典视频| 欧美激情一区二区三区在线视频观看| 美女精品在线观看| 久久久午夜精品| 欧美性生交xxxxx久久久| 99国产精品久久久久久久久久| 亚洲经典在线| 欧美日韩国产三区| 亚洲欧美日韩综合国产aⅴ| 亚洲免费视频网站| 黄色成人av网| 亚洲黄网站在线观看| 欧美三级不卡| 久久精品中文字幕一区二区三区| 欧美一区二区三区在| 亚洲高清不卡一区| 亚洲人成人99网站| 国产精品麻豆va在线播放| 久久精品中文字幕一区| 欧美电影免费网站| 亚洲影音先锋| 久久久一本精品99久久精品66| 亚洲人午夜精品| 亚洲私人黄色宅男| 在线看一区二区| 日韩午夜av电影| 国产婷婷成人久久av免费高清| 蜜臀va亚洲va欧美va天堂| 欧美日韩一区在线播放| 久久亚洲色图| 欧美精品亚洲| 久久亚洲春色中文字幕| 欧美区视频在线观看| 国产伦一区二区三区色一情| 久久躁狠狠躁夜夜爽| 欧美日韩高清在线观看| 久久亚洲综合| 国产精品久久久久aaaa樱花| 另类天堂av| 国产精品美女999| 亚洲国产精品ⅴa在线观看 | 亚洲欧美日韩爽爽影院| 久久久久国产一区二区三区| 亚洲一区二区三区在线视频| 玖玖精品视频| 久久久91精品| 国产精品国产三级国产专播精品人 | 午夜精品久久久久久久男人的天堂| 亚洲国产精品t66y| 久久不射2019中文字幕| 亚洲天堂av电影| 久久久免费观看视频| 久久精品在线免费观看| 国产精品久久久久秋霞鲁丝 | 欧美亚洲在线观看| 亚洲伊人网站| 欧美日韩在线一区二区| 亚洲国产日韩综合一区| 国产视频一区在线| 亚洲深夜福利在线| 亚洲图中文字幕| 欧美日韩久久不卡| 91久久精品一区| 亚洲精品激情| 欧美国产在线电影| 亚洲电影免费观看高清完整版| 国产亚洲精品一区二555| 亚洲五月婷婷| 午夜久久久久久| 国产精品亚洲а∨天堂免在线| 99精品国产在热久久| 中国亚洲黄色| 欧美午夜久久久| 亚洲欧美一区二区视频| 欧美在线首页| 黑人巨大精品欧美一区二区| 欧美一区二区福利在线| 久久精品国产精品| 国产专区综合网| 久久久久久久综合色一本| 久热精品视频在线观看| 一区二区三区在线免费观看| 久久久久久网站| 亚洲福利在线观看| 一区二区三区视频在线| 国产精品va| 欧美一区二区视频观看视频| 美女免费视频一区| 99精品热视频只有精品10| 欧美性猛交99久久久久99按摩| 亚洲永久免费精品| 久久亚洲精品一区二区| 欧美丝袜一区二区三区| av成人福利| 久久精品一本| 一本色道久久| 国产欧美日韩视频在线观看| 久久国产夜色精品鲁鲁99| 欧美激情一区二区三区在线视频| 一区二区精品在线| 韩日欧美一区| 欧美人成免费网站| 亚欧美中日韩视频| 免费影视亚洲| 午夜精品久久久久久99热| 韩国av一区二区三区四区| 狼人社综合社区| 一区二区三区国产精品| 久久久久久久一区二区| 亚洲精品在线免费观看视频| 国产欧美精品国产国产专区| 免费观看亚洲视频大全| 99国内精品久久| 久久综合伊人| 亚洲欧美日韩高清| 1024亚洲| 国产一区二区日韩精品| 欧美日韩综合久久| 久久综合五月| 午夜亚洲性色视频| 99v久久综合狠狠综合久久| 欧美r片在线| 久久精品亚洲一区二区| 中日韩男男gay无套| 亚洲黄色在线视频| 国产日韩欧美在线播放不卡| 欧美日韩国产高清视频| 久久综合导航| 欧美一区二区三区在线观看| 亚洲一区二区三区四区五区黄| 最新国产乱人伦偷精品免费网站 | 亚洲欧美精品一区|