मुझे पता है कि मेरे विनाशकों को ढेर के सामान्य खोलने पर कहा जाता है और जब अपवाद फेंक दिया जाता है, लेकिन बाहर निकलने पर नहीं कहा जाता है।सी ++ विनाशकों को किस परिस्थिति में नहीं बुलाया जा रहा है?
क्या कोई अन्य मामले हैं जहां मेरे विनाशकों को बुलाया नहीं जा रहा है? SIGINT या SIGSEGV जैसे सिग्नल के बारे में क्या? मुझे लगता है कि एसआईजीएसईजीवी के लिए, उन्हें बुलाया नहीं जाता है, लेकिन साइनइन के लिए वे हैं, मुझे कैसे पता चलेगा कि कौन से सिग्नल ढेर को खोलेंगे?
क्या कोई अन्य परिस्थितियां हैं जहां उन्हें नहीं बुलाया जाएगा?
के रूप में यहां बताया, http://thedailywtf.com/Articles/My-Tales.aspx, आप भी पता होना चाहिए नाशक जब बुलाया नहीं की जाएगी पावर प्लग खींचा गया है;)। –
SIGINT स्टैक को अनदेखा नहीं करेगा जबतक कि आप एक सिग्नल हैंडलर स्थापित नहीं करते जो डिफ़ॉल्ट व्यवहार को ओवरराइड करता है। डिफ़ॉल्ट रूप से SIGINT परिणाम तत्काल कार्यक्रम समाप्ति में परिणाम। – karunski
इसे उत्तर के रूप में पोस्ट नहीं किया जा रहा है क्योंकि यह प्रश्न में एक निरीक्षण की तरह लगता है। स्थिर, स्वचालित या थ्रेड स्टोरेज अवधि वाले ऑब्जेक्ट्स के जीवनकाल के अंत में विनाशकों को स्वचालित रूप से (सामान्य परिस्थितियों में) कहा जाता है। ** डायनामिक ** स्टोरेज अवधि के साथ ऑब्जेक्ट के लिए विनाशक को केवल तभी बुलाया जाता है जब ऑब्जेक्ट पर पॉइंटर पर 'डिलीट' कहा जाता है। इसलिए एक विनाशक को गतिशील वस्तुओं के लिए बुलाया नहीं जा रहा है जिसके लिए 'हटाना' कभी नहीं कहा जाता है (चाहे क्योंकि स्मृति रिसाव असंभव हो या निरीक्षण के द्वारा)। –