>  기사  >  백엔드 개발  >  C에서 전역 및 클래스 정적 변수에 대해 소멸자는 언제 호출됩니까?

C에서 전역 및 클래스 정적 변수에 대해 소멸자는 언제 호출됩니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-07 14:39:03332검색

When are Destructors Called for Global and Class Static Variables in C  ?

C에서 전역 및 클래스 정적 변수에 대한 소멸자 호출

C에서 객체는 일반적으로 스택 메모리에 할당됩니다(로컬 변수용). 및 힙 메모리(동적으로 할당된 변수용). 그러나 전역 변수와 클래스 정적 변수는 프로그램의 데이터 섹션에 할당되어 다음과 같은 질문을 하게 됩니다. 소멸자는 언제 호출됩니까?

C 03 표준(§ 3.6.3)에 따르면 정적 저장 기간을 가진 초기화된 객체는 메인 함수에서 반환될 때와 종료 함수가 호출될 때 호출됩니다. 이러한 객체는 생성자 완료 또는 동적 초기화 완료의 역순으로 소멸됩니다.

또한 클래스 정적 데이터 멤버(§ 9.4.2 7)의 경우 초기화 및 소멸 동작은 비-클래스 데이터 멤버의 동작과 유사합니다. 로컬 개체입니다.

그러나 소멸자에 관찰 가능한 동작이 없으면(즉, 부작용이 없는 경우) 호출되지 않을 수 있습니다. 이는 "C 소멸자는 블록이 끝날 때까지 호출되지 않도록 보장됩니까?"에 대한 Terry Mahaffey의 응답에 설명된 것처럼 컴파일러가 불필요한 소멸자 호출을 방지하도록 코드를 최적화할 수 있기 때문입니다.

위 내용은 C에서 전역 및 클래스 정적 변수에 대해 소멸자는 언제 호출됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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