원인

함수 내부에 선언한 로컬변수의 주소를 함수 밖으로 보낼 시 발생. 

로컬변수는 함수가 리턴됨과 동시에 메모리에서 제거되므로 이미 사라진 변수의 주소를 참조해선 안된다.

#include <stdio.h>

char* func()
{
    char arr[4];
    return arr;
}

int main()
{

}

 

 

해결

가장 쉬운 방법으로는 리턴할 변수를 정적변수로 만들어주는 것.

정적변수의 사용을 피하고싶다면 로직을 다시 생각해볼 수 있다.

#include <stdio.h>

char* func()
{
    static char arr[4];
    return arr;
}

int main()
{

}