कॉल स्टैक (Call Stack)

कॉल स्टैक, सी # में, प्रोग्राम की शुरुआत से वर्तमान स्टेटमेंट के निष्पादन तक रन टाइम पर बुलाए जाने वाले तरीकों के नामों की सूची है।

कॉल स्टैक मुख्य रूप से उस बिंदु का ट्रैक रखने के लिए अभिप्रेत है जिस पर प्रत्येक सक्रिय सबरूटीन को निष्पादन समाप्त होने पर नियंत्रण वापस करना चाहिए। कॉल स्टैक किसी एप्लिकेशन को डीबग करने के लिए एक उपकरण के रूप में कार्य करता है जब पता लगाने की विधि को एक से अधिक संदर्भों में बुलाया जा सकता है। यह दी गई विधि को कॉल करने वाली सभी विधियों में ट्रेसिंग कोड जोड़ने से बेहतर विकल्प है। जब भी उपयोगकर्ता कोड में कहीं भी कोई अपवाद फेंका जाता है, तो सामान्य भाषा रनटाइम (CLR) कॉल स्टैक को खोल देगा और विशिष्ट अपवाद प्रकार को निर्धारित करने के लिए कैच ब्लॉक की खोज करेगा। यदि कोई उपयुक्त हैंडलर नहीं है, तो सीएलआर आवेदन को समाप्त कर देगा। इसलिए, कॉल स्टैक का उपयोग निष्पादन सूचक को यह बताने के लिए किया जाता है कि आगे कहाँ जाना है। 

कॉल स्टैक को "स्टैक" के रूप में व्यवस्थित किया जाता है, मेमोरी में डेटा संरचना को अंतिम-इन-फर्स्ट-आउट तरीके से संग्रहीत करने के लिए, ताकि सबरूटीन का कॉलर स्टैक पर वापसी पते को धक्का दे और समाप्त होने के बाद सबरूटीन कहलाता है। उस पते पर नियंत्रण स्थानांतरित करने के लिए कॉल स्टैक से वापसी पता पॉप करता है।

सी # में, कोई भी एप्लिकेशन "मुख्य" विधि से शुरू होता है, जो बदले में अन्य विधियों को कॉल करता है। एक विधि के लिए प्रत्येक कॉल पर, विधि को स्टैक के शीर्ष पर जोड़ा जाता है और कॉल करने वाले के पास लौटने पर स्टैक से हटा दिया जाता है। साथ ही, किसी ब्लॉक में घोषित चर का दायरा उस समय से निर्धारित होता है जब उसका मान स्टैक पर धकेल दिया जाता है (कॉल स्टैक के भाग के रूप में) जब तक कि निष्पादन ब्लॉक को छोड़ नहीं देता जब वेरिएबल और कॉल स्टैक स्टैक से पॉप हो जाते हैं। इस प्रकार, स्टैक स्थानीय चर (मान प्रकार) और कॉल स्टैक (स्टैक फ़्रेम) दोनों को बनाए रखता है, जिसका आकार प्रोग्राम की जटिलता को इंगित करता है।

Post a Comment

0 Comments