एक आम तरीका है कि कई एम-फाइल फ़ंक्शन हैं जो सार्वजनिक इंटरफ़ेस प्रदान करते हैं, उदा। sysInit.m, sysRefresh.m, आदि
इनमें से प्रत्येक एम-फाइल मैक्स फ़ंक्शन को किसी प्रकार के हैंडल, एक स्ट्रिंग (या संख्या) को कॉल करने के लिए फ़ंक्शन की पहचान करने और किसी भी अतिरिक्त तर्क के साथ कॉल करती है। उदाहरण के लिए, sysRefresh.m प्रकार दिखाई देंगे:
function sysRefresh(handle)
return sysMex(handle, 'refresh')
अपने Sysmex MEX समारोह में, आप या तो संभाल होना एक कच्चे ढेर सूचक (आसान है, लेकिन बहुत ही सुरक्षित नहीं) हो सकता है, या आप में एक मानचित्रण बनाए रख सकते हैं हैंडल आईडी से वास्तविक ऑब्जेक्ट पॉइंटर्स तक सी/सी ++। इस समाधान के लिए थोड़ा अतिरिक्त काम की आवश्यकता है, लेकिन यह अधिक सुरक्षित है। इस तरह कोई व्यक्ति गलती से एक मनमानी संख्या को संभाल नहीं सकता है, जो एक खतरनाक सूचक के रूप में कार्य करता है। साथ ही, जब आप मैक्स फ़ंक्शन को अनलोड करते हैं तो सभी मेमोरी और संसाधनों को रिलीज़ करने के लिए ऑन क्लीनन फ़ंक्शन का उपयोग करने जैसे फैनसीयर फ़ंक्शन कर सकते हैं (उदा। इसलिए जब आप मैक्स फ़ंक्शन को पुन: संकलित करते हैं तो आपको मैटलैब को पुनरारंभ करने की आवश्यकता नहीं होती है)।
यदि आप मैटलैब कक्षा के पीछे हैंडल पसंद करते हैं और छुपाते हैं तो आप थोड़ा और आगे जा सकते हैं। यदि आप रुचि रखते हैं तो दस्तावेज़ों में मैटलैब के लिए ओओ सुविधाओं पर पढ़ें। यदि आप हाल के संस्करण का उपयोग कर रहे हैं, तो आप अपने क्लीनर हैंडल ऑब्जेक्ट्स का लाभ उठा सकते हैं।
स्रोत
2009-07-27 11:46:38
धन्यवाद श्री फूज़। मैंने हैंडल (सीधे पॉइंटर के रूप में) के साथ कार्यान्वित किया है और ऐसा लगता है कि यह काम कर रहा है। यह मेरे लिए थोड़ा आश्चर्यजनक है कि ढेर में आवंटित वर्ग वस्तु, मैक्स फ़ंक्शन लौटने पर हटाई नहीं जाती है। क्या यह एक सामान्य व्यवहार है जिसे मैं विंडोज (एक्सपी, विस्टा और 7) पर भरोसा कर सकता हूं? बहुत बहुत धन्यवाद। – Paul
यदि आप मैटलैब के आवंटक का उपयोग करके ऑब्जेक्ट आवंटित करते हैं, तो वे मेक्सिको फ़ंक्शन से लौटने पर स्वचालित रूप से हटा दिए जाते हैं। यदि आप मॉलोक या नए का उपयोग करते हैं, तो मैटलैब उनके बारे में नहीं जानता है और इस प्रकार इसे आवंटित नहीं किया जाता है। –