এখানে আমরা দেখব স্ট্যাক আনওয়াইন্ডিং এর অর্থ কি। যখন আমরা কিছু ফাংশনকে কল করি, তখন এটি ঠিকানাটিকে কল স্ট্যাকে সংরক্ষণ করে এবং ফাংশন থেকে ফিরে আসার পরে, ঠিকানাটি পপ আউট করে কাজ শুরু করার জন্য যেখানে এটি বাকি ছিল।
স্ট্যাক আনওয়াইন্ডিং একটি প্রক্রিয়া যেখানে ফাংশন কল স্ট্যাক এন্ট্রি রানটাইমে সরানো হয়। স্ট্যাক উপাদানগুলি সরাতে, আমরা ব্যতিক্রমগুলি ব্যবহার করতে পারি। যদি অভ্যন্তরীণ ফাংশন থেকে একটি ব্যতিক্রম নিক্ষেপ করা হয়, তাহলে স্ট্যাকের সমস্ত এন্ট্রি মুছে ফেলা হয় এবং মূল আমন্ত্রণকারী ফাংশনে ফিরে যায়।
আসুন একটি উদাহরণের মাধ্যমে স্ট্যাক আনওয়াইন্ডিং এর প্রভাব দেখি।
উদাহরণ কোড
#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 এ প্রবেশ করে। এর পরে একটি ব্যতিক্রম ঘটে, তাই এটি স্ট্যাক থেকে সমস্ত তথ্য সরিয়ে দেয় এবং আবার ফাংশন3 এ ফিরে আসে।