जब मैं किसी सी ++ 11 लैम्ब्डा में संदर्भ द्वारा किसी ऑब्जेक्ट को कैप्चर करता हूं, तो ऑब्जेक्ट को दायरे से बाहर जाने दें, और फिर लैम्ब्डा को निष्पादित करें, फिर भी ऑब्जेक्ट तक पहुंच हो। जब मैं निम्नलिखित कोड निष्पादित करता हूं, तो लैम्ब्डा कॉल अभी भी ऑब्जेक्ट तक पहुंच सकता है, हालांकि विनाशक को पहले ही बुलाया जा चुका है! क्या कोई यह समझा सकता है कि यह क्यों काम करता है और मुझे रनटाइम त्रुटि क्यों नहीं मिलती?लैम्ब्डा कैप्चर एंड मेमोरी मैनेजमेंट
MyClass created!
MyClass destroyed!
5
has enough health
मुझे संदेह है कि यह अनिर्धारित व्यवहार है, और इस मामले में कि अनिर्धारित व्यवहार सिर्फ "वस्तु जीवित और अच्छी तरह से प्रतीत होती है।" – templatetypedef
अपरिभाषित व्यवहार। Http://c-faq.com/ansi/experiment.html –
देखें यदि आप इसे स्मृति रिसाव विश्लेषक (जैसे वालग्रिंड) के माध्यम से चलाते हैं, तो यह (उम्मीद है) रिपोर्ट करेगा कि आप किसी मृत वस्तु तक पहुंच रहे हैं। –