회신: 구조체, 공용체 변수 반환에 대해서..
, 도장_ 관리자님이 작성테스트를 잘못한겁니다.
컴파일을 하면 하단 창에 경고 메시지가 표시될 겁니다.
warning C4172: 지역 변수 또는 임시: abc의 주소를 반환하고 있습니다.
즉, 컴파일은 되지만, 경고가 표시됩니다.
struct test abc에서 abc는 함수를 벗어나면 사라집니다. 함수 안에서만 범위(scope)가 유효한 지역 변수이기 때문입니다.
단, C 언어는 무효화되었다고 메모리를 정리하지 않습니다. 따라서 포인터를 사용한다면 여전히 그 주소에 접근할 수 있지만, 언제든지 다른 코드에 의해 덮어써질 수 있습니다. 이런 코드는 버그, 잠재적인 보안 위협을 만들 게 됩니다. 컴파일러 경고 메시지를 잘 봐주세요. 즉, 당장은 동작하는 것처럼 보이지만, 잘못 작성한 코드입니다.
C 언어는 메모리 관리를 전적으로 프로그래머에게 맡깁니다. 즉, 프로그래머가 변수의 유효 범위를 잘 인지하고 코드를 작성해야 합니다.
감사합니다.