2008-12-04 8 views
18

क्या कोई ऊपर वर्णित प्रकारों और कुछ नमूना उपयोग के बीच अंतर को स्पष्ट रूप से समझा सकता है ताकि दोनों के बीच अंतर स्पष्ट रूप से समझाया जा सके?BSTR और _bstr_t के बीच क्या अंतर है?

किसी भी मदद की अत्यधिक सराहना की जाएगी! नोट: यह प्रश्न this other question

उत्तर

18

बीएसटी COM के साथ प्रयुक्त स्ट्रिंग डेटा प्रकार है।

_bstr_t एक रैपर वर्ग है जो एक स्मार्ट सूचक की तरह काम करता है, इसलिए जब आवृत्ति नष्ट हो जाती है या दायरे से बाहर हो जाती है तो यह आवंटित स्मृति को मुक्त कर देगा। _bstr_t में भी संदर्भ गणना है, जो हर बार जब आप _bstr_t वैरिएबल को वैल्यू (अनावश्यक प्रति से परहेज करते हैं) पास करते हैं और जब इसका उपयोग नहीं किया जाता है तो कमी होती है। जब भी सभी संदर्भ नष्ट हो जाते हैं, तो स्ट्रिंग के लिए आवंटित स्मृति मुक्त हो जाती है।

बीएसटी का एक विकल्प CComBSTR है। यह बीएसटी के लिए स्मृति का प्रबंधन भी करता है, लेकिन इसमें कोई संदर्भ गिनती नहीं है। वास्तव में लिंक प्रदान करने के लिए

10

_bstr_t BSTR प्रकार को लपेटता है। इसलिए, जब आप _bstr_t को तुरंत चालू करते हैं, तो आप BSTR भी बना रहे हैं। _bstr_t बस आपके लिए सब कुछ लपेटता है और बीस्ट्रेट को "स्मार्ट पीआरटी" की तरह काम करता है।

BSTR

http://msdn.microsoft.com/en-us/library/ms221069.aspx

SysAllocString()

http://msdn.microsoft.com/en-us/library/ms891285.aspx

_bstr_t

http://msdn.microsoft.com/en-us/library/zthfhkd6(VS.71).aspx

+0

+1 –

13

BST आर एक कच्चा सूचक है, जबकि _bstr_t एक पॉइंटर encapsulating एक वर्ग है।

यह चार * बनाम std :: स्ट्रिंग रूप में एक ही अंतर है।

संबंधित मुद्दे