Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में स्टैक अनवाइंडिंग

यहां हम देखेंगे कि स्टैक अनइंडिंग का अर्थ क्या है। जब हम कुछ फ़ंक्शन को कॉल करते हैं, तो यह पते को कॉल स्टैक में संग्रहीत करता है, और फ़ंक्शन से वापस आने के बाद, पते को उस स्थान पर शुरू करने के लिए पॉप आउट करता है जहां से यह छोड़ा गया था।

स्टैक अनइंडिंग एक ऐसी प्रक्रिया है जहां फ़ंक्शन कॉल स्टैक प्रविष्टियां रनटाइम पर हटा दी जाती हैं। स्टैक तत्वों को हटाने के लिए, हम अपवादों का उपयोग कर सकते हैं। यदि आंतरिक फ़ंक्शन से एक अपवाद फेंका जाता है, तो स्टैक की सभी प्रविष्टियां हटा दी जाती हैं, और मुख्य आवेदक फ़ंक्शन पर वापस आ जाती हैं।

आइए एक उदाहरण के माध्यम से स्टैक अनइंडिंग के प्रभाव को देखें।

उदाहरण कोड

#include <iostream>
using namespace std;

void function1() throw (int) { //this function throws exception
   cout<<"\n Entering into function 1";
   throw 100;
   cout<<"\n Exiting function 1";
}

void function2() throw (int) { //This function calls function 1
   cout<<"\n Entering into function 2";
   function1();
   cout<<"\n Exiting function 2";
}

void function3() { //function to call function2, and handle
   exception thrown by function1
   cout<<"\n Entering function 3 ";
   try {
      function2(); //try to execute function 2
   }
   catch(int i) {
      cout<<"\n Caught Exception: "<<i;
   }
   cout<<"\n Exiting function 3";
}

int main() {
   function3();
   return 0;
}

आउटपुट

Entering function 3
Entering into function 2
Entering into function 1
Caught Exception: 100
Exiting function 3

यहां हम देख सकते हैं कि नियंत्रण फ़ंक्शन 3 की जानकारी संग्रहीत करता है, फिर फ़ंक्शन 2 में प्रवेश करता है, और फिर फ़ंक्शन 1 में। उसके बाद एक अपवाद होता है, इसलिए यह स्टैक से सभी जानकारी को हटा देता है, और फिर से function3 पर वापस आ जाता है।


  1. C++ में फंक्शन रोटेट करें

    मान लीजिए कि हमने पूर्णांक A की एक सरणी दी है और n सरणी A की लंबाई है। अब मान लें कि Bk सरणी A को घुमाकर प्राप्त की गई एक सरणी है, k स्थिति घड़ी-वार। यहां रोटेशन को − . के रूप में परिभाषित किया जा सकता है एफ (के) =0 * बीके [0] + 1 * बीके [1] + ... + (एन -1) * बीके [एन -1]। अब F(0), F(1), ...,

  1. सी ++ एसटीएल में ढेर (3.5)

    C++ STL में, स्टैक का उपयोग कंटेनर के रूप में किया जाता है जिसे LIFO संरचना के रूप में कार्यान्वित किया जाता है। LIFO का मतलब लास्ट इन फर्स्ट आउट। स्टैक पुस्तकों के ढेर के रूप में देख सकता है जिसमें पुस्तकों को एक के ऊपर एक व्यवस्थित किया जाता है और अंतिम डाली गई पुस्तक सबसे पहले हटाई जाएगी, इसलिए इ

  1. सी ++ में स्वैप () फ़ंक्शन

    स्वैप () फ़ंक्शन का उपयोग दो नंबरों को स्वैप करने के लिए किया जाता है। इस फ़ंक्शन का उपयोग करके, आपको दो नंबरों को स्वैप करने के लिए किसी तीसरे चर की आवश्यकता नहीं है। यहाँ C++ भाषा में स्वैप () का सिंटैक्स दिया गया है, void swap(int variable_name1, int variable_name2); यदि हम वेरिएबल को मान असाइन