WinAPI

복습) 지역 변수

Nin 2021. 1. 14. 02:22

지역 변수는 지역이 끝날때 사라진다.

int* Test()
{
   int A = 100;
   
   return &A;
}

int main()
{
   int* b = Test();
}

위의 코드는 문법적으로 문제도 없고 실행해서 값을 확인해보면

b의 변수에는 100의 값이 들어가 있다.

그렇지만 이는 치명적으로 잘못 생각하고 있는 경우이다.

메모리로 보면 이런 상황이 된다. 즉 값이 100으로 들어 올수도 있지만 

어떤 값이 들어올지 모르고 이상한 값이 들어와도 전혀 이상할게 없는 경우이다.

안전하게 처리하려면 새로운 메모리를 만들어 내서 리턴해주면 된다.