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

C 소멸자는 전역 및 정적 변수에 대해 호출됩니까?

DDD
DDD원래의
2024-11-06 13:22:02396검색

Do C   Destructors Get Called for Global and Static Variables?

C는 전역 및 클래스 정적 변수에 대해 소멸자를 호출합니까?

일부 가정과는 달리 C는 실제로 전역 변수와 클래스 모두에 대해 소멸자를 호출합니다. -정적 변수. 소멸은 두 가지 특정 지점에서 발생합니다:

  1. Main에서 돌아올 때: main() 함수가 끝나면 모든 전역 및 클래스 정적 변수가 소멸됩니다. 이는 C 03 표준의 § 3.6.3과 일치하며, 이는 "메인에서 반환된 결과"로 이러한 파기를 요구합니다.
  2. Exit 호출 시: Exit() 함수가 다음과 같은 경우 프로그램 내에서 사용되면 § 3.6.3에 설명된 대로 "exit 호출의 결과로" 전역 및 클래스 정적 변수가 소멸됩니다.

이러한 변수는 생성자 또는 동적 초기화의 역순을 반영합니다. 또한 § 9.4.2 7에 따라 정적 데이터 멤버는 로컬이 아닌 개체와 동일하게 초기화되고 삭제됩니다.

그러나 관찰 가능한 동작이 없는 소멸자는 호출되지 않을 수 있다는 점에 유의하는 것이 중요합니다. 이에 대한 자세한 내용은 "C 소멸자는 블록이 끝날 때까지 호출되지 않는 것이 보장됩니까?"에 대한 Terry Mahaffey의 답변에서 자세히 살펴보겠습니다.

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

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