>백엔드 개발 >C++ >C 함수에서 정적 변수의 수명 및 초기화/초기화 해제 동작은 무엇입니까?

C 함수에서 정적 변수의 수명 및 초기화/초기화 해제 동작은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-28 14:19:22907검색

What is the Lifetime and Initialization/Deinitialization Behavior of Static Variables in C   Functions?

C 함수에서 정적 변수의 수명

함수 내에서 변수가 static으로 선언되면 한 번만 초기화되고 해당 값이 적용됩니다. 후속 함수 호출 전반에 걸쳐 유지됩니다. 그러나 동작을 이해하려면 정확한 수명을 결정하는 것이 중요합니다.

함수 정적 변수의 수명에는 다음이 포함됩니다.

  • 초기화: 프로그램 실행은 변수 선언에 도달하여 초기화만 보장합니다.
  • 초기화 해제: 자동 변수와 달리 함수 정적은 프로그램 종료 시 초기화 해제되어 적절한 리소스 해제를 보장합니다.

생성자 및 소멸자 호출과 관련하여 C 표준에서는 초기화 및 초기화 해제 중에 각각 자동으로 호출되도록 지정합니다. 이렇게 하면 적절한 객체 생성 및 소멸이 보장됩니다.

수명 예

다음 코드 조각을 고려하세요.

void foo() { 
    static string plonk = "When will I die?";
}

이 예에서 정적 변수는 plonk는 실행이 처음으로 foo 함수에 들어갈 때 초기화됩니다. 정적이므로 해당 값은 foo에 대한 후속 호출 전체에서 유지됩니다. 프로그램이 종료되면 plonk의 소멸자가 호출되어 변수가 삭제됩니다.

또한 프로그램이 실행될 때마다 정적 변수의 생성 및 소멸 순서가 달라질 수 있어 출력이 달라질 수 있습니다.

위 내용은 C 함수에서 정적 변수의 수명 및 초기화/초기화 해제 동작은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.