• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

foo2 관련 질문 드립니다.

21.02.21 15:55 작성 조회수 113

0

foo2 에서 static $count = 0 부분이 함수가 실행 될 때마다 실행 되어서 초기화 될 것 같은데 왜 초기화가 안되는 것 인가욤?

답변 1

답변을 작성해보세요.

0

static 키워드를 사용한 선언은 제일 첫 선언에서 정적 영역에 저장됩니다. 일반적인 함수에 선언된 로컬 변수는 스택이라는 영역에 쌓여 함수호출이 끝나면 메모리상에서 소멸하고, 다시 함수를 호출하면 변수에 대한 메모리를 할당하여 초기화합니다. 하지만 정적 영역에 있는 것은 그러한 과정을 거치지 않고 함수 호출이 끝나도 유지됩니다.

코드가 상당히 헷갈려서 두 번 호출하면 $count 가 0 으로 초기화되어 재선언이 일어날 것처럼 보이지만 사실 그렇지 않습니다.