C에서 전역 및 클래스 정적 변수에 대한 소멸자 호출
C에서 객체는 일반적으로 스택 메모리에 할당됩니다(로컬 변수용). 및 힙 메모리(동적으로 할당된 변수용). 그러나 전역 변수와 클래스 정적 변수는 프로그램의 데이터 섹션에 할당되어 다음과 같은 질문을 하게 됩니다. 소멸자는 언제 호출됩니까?
C 03 표준(§ 3.6.3)에 따르면 정적 저장 기간을 가진 초기화된 객체는 메인 함수에서 반환될 때와 종료 함수가 호출될 때 호출됩니다. 이러한 객체는 생성자 완료 또는 동적 초기화 완료의 역순으로 소멸됩니다.
또한 클래스 정적 데이터 멤버(§ 9.4.2 7)의 경우 초기화 및 소멸 동작은 비-클래스 데이터 멤버의 동작과 유사합니다. 로컬 개체입니다.
그러나 소멸자에 관찰 가능한 동작이 없으면(즉, 부작용이 없는 경우) 호출되지 않을 수 있습니다. 이는 "C 소멸자는 블록이 끝날 때까지 호출되지 않도록 보장됩니까?"에 대한 Terry Mahaffey의 응답에 설명된 것처럼 컴파일러가 불필요한 소멸자 호출을 방지하도록 코드를 최적화할 수 있기 때문입니다.
위 내용은 C에서 전역 및 클래스 정적 변수에 대해 소멸자는 언제 호출됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!