Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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

여기에서 컨트롤이 function3의 정보를 저장한 다음 function2에 입력한 다음 function1에 입력하는 것을 볼 수 있습니다. 그 후 하나의 예외가 발생하여 스택에서 모든 정보를 제거하고 다시 function3으로 돌아갑니다.