2009-05-16 7 views
7

मान लीजिए कि COM इंटरफ़ेस से एक विधि BSTR मान देता है। क्या मैं अपनी राय में सही हूं कि मुझे इसे मुक्त करना होगा?बीएसटी लौटने वाले किसके पास है?

http://msdn.microsoft.com/en-us/library/aa365382(VS.85).aspx पर कोड उदाहरण ऐसा नहीं करता है।

कौन गलत है?

उत्तर

11

एमएसडीएन नमूना गलत है। कॉलर बाहर निकलता है और bstrs में बाहर/बाहर। यदि यह अंदर/बाहर है तो आपको शून्य या वैध बीएसटी में गुजरना होगा। अगर यह केवल बाहर है, तो इसे शुरू करने की आवश्यकता नहीं है।

यह msdn के com allocation rules से बहुत स्पष्ट नहीं है, लेकिन क्लाइंट स्टब मेमोरी को आउट मानों पर आवंटित करता है ताकि सर्वर के कॉलर के दृष्टिकोण से। इसे और कौन कॉल कर सकता है लेकिन कॉलर?

+1

मुझे हमेशा 'BSTR' से निपटने के बजाय '_bstr_t' का उपयोग करना बहुत सुविधाजनक लगता है। – wilx

+0

हाँ, लेकिन सभी लोग विजुअल स्टूडियो पर फंसने के लिए तैयार नहीं हैं। –

9

टोनी सही है लेकिन मैं अपने उत्तर पर विस्तार करना चाहता था। स्थिति सिर्फ एक बीएसटी तक ही सीमित नहीं है। कॉलर बाहर या अंदर/बाहर पैरामीटर के माध्यम से लौटाई गई किसी भी मेमोरी को मुक्त करने के लिए ज़िम्मेदार है।

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