2
我複製的wstring到使用_bstr_t長度:如何獲得_bstr_t
_bstr_t name;
SysFreeString(name); // Free previous string, if any.
name = SysAllocString(Member[k].Membername);
現在,以前我用「名」我要檢查它是否包含至少5個字符。換句話說,我想檢查它的長度。
我沒有找到「countof」或「len」或類似的東西。有沒有人有想法?
感謝, Lumpi
什麼平臺呢?視窗? – 2011-05-29 10:56:52
是的,Windows XP – Lumpi 2011-05-29 11:33:25
你的代碼包含一個主要的錯誤:不要將諸如'SysFreeString'這樣的'BSTR'調用與'_bstr_t'混合在一起。 'SysFreeString'與C代碼中的'BSTR'一起使用;在C++中'_bstr_t'會爲你管理內存。特別是,'_bstr_t :: operator ='會爲你的舊字符串調用'SysFreeString',所以你的代碼中的錯誤有效地包含了一個雙重刪除的錯誤。類似地,'_bstr_t :: operator ='將爲新字符串調用'SysAllocString'並複製您的輸入,所以_your_'SysAllocString'泄漏。即你的bug也是內存泄漏。 – MSalters 2011-05-30 08:33:06