2012-03-20 11 views
5

Virtual method interception - डेल्फी एक्सई के साथ पेश किया गया - इसका उपयोग 'प्रॉक्सिफाइ' विधियों के लिए किया जा सकता है ताकि मूल विधि को पहले और बाद में कस्टम कोड निष्पादित किया जा सके।क्या मैं tvirtualMethodInterceptor का उपयोग कर इंस्टेंस गिनती निगरानी लागू कर सकता हूं?

क्या इसका उपयोग वर्चुअल विधियों को प्रॉक्सीफाइंग करके डेल्फी एप्लिकेशन में सभी ऑब्जेक्ट इंस्टेंसों की गिनती रखने के लिए भी किया जा सकता है। ऑब्जेक्ट कन्स्ट्रक्शन और टॉब्जेक्ट। पहले डिज़ाइन?

यदि हां, तो यह रन टाइम पर फास्टएमएम 4 मेमोरी आवंटन आंकड़ों का विश्लेषण करने के लिए एक आसान तरीका हो सकता है (वस्तुओं की InstanceSize संपत्ति का उपयोग करके और आवंटित स्मृति ब्लॉक के खिलाफ मिलान)।


अद्यतन: एक सवाल जो DocWiki जानकारी से जवाब देने के लिए बहुत आसान था पूछने के लिए खेद है - मैं जुड़ा हुआ लेख पढ़ा है पहली और एकमात्र उदाहरण कोड

+0

... हाँ? मैं देखने में सक्षम नहीं हूं क्यों नहीं। क्या तुमने कोशिश की? प्रॉक्सी, वृद्धि और एक काउंटर को कम करने (संभावित रूप से [थ्रेड सुरक्षित वृद्धि/कमी] का उपयोग (http://msdn.microsoft.com/en-us/library/windows/desktop/ms683614 (v = vs.85) .aspx को कार्यान्वित करें)) और, उम ... तुम वहाँ जाओ। –

+0

फास्टएमएम स्रोतों को संशोधित करके आप इसे और अधिक आसानी से नहीं कर सके? –

+0

@WarrenP FastMM को वास्तविक प्रकारों का कोई ज्ञान नहीं है, जो इसे स्मृति ब्लॉक प्रदान करता है, यह केवल स्मृति आवंटन/डेलोकेशन अनुरोध – mjn

उत्तर

3

नहीं, यह काम करने के लिए नहीं जा रहा है स्किम्ड। documentation, मेरे जोर देने के साथ से:

उपयोगकर्ता की अनुमति देता करने के लिए गतिशील रूप से निर्दिष्ट उदाहरणों एक विशेष वर्ग प्रकार के पर आभासी विधि कॉल अवरोधन।

समस्या यह है कि आप प्रक्षेपण करने से पहले प्रत्येक उदाहरण को पकड़ने की आवश्यकता है। लेकिन आप उदाहरणों को पकड़ने के लिए प्रक्षेपित होने की उम्मीद कर रहे हैं। तो अब आप एक चिकन और अंडा परिदृश्य में पकड़े गए हैं।

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

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