중요하지 않은 네이티브 확장에는 동적으로 할당되는 인터프리터 데이터 구조가 필요합니다.Tcl 확장 : 확장의 수명주기 'ClientData
현재 확장명에 에 해당하는 키와 적절한 삭제 루틴 인 이있는 Tcl_SetAssocData를 사용하여이 메모리가 누출되지 않도록합니다.
그러나 Tcl_PkgProvideEx도 이와 같은 정보를 기록 할 수 있습니다. 이 정보는 Tcl_PkgRequireEx로 검색 할 수 있습니다. 확장 기능의 데이터 구조를 패키지와 연결하는 것이 "잡아 가방"보다 더 자연 스럽습니다. AssocData; 그러나 Pkg * Ex 루틴은 자동으로 호출 된 삭제 루틴을 제공하지 않습니다. 그래서 AssocData 방식을 유지하려면 이 필요하다고 생각합니다.
Pkg * Ex 루틴은 어떤 상황에서 설계 되었습니까?
또한 Tcl 라이브러리에서는 ExitHandlers 및 ThreadExitHandlers를 설치할 수 있습니다. 매뉴얼을 실행 중일 때, 이는 버퍼 등을 디스크로 플러시하는 것입니다.
ExitHandlers를 사용해야하는 다른 상황이 있습니까?
Tcl이 종료 될 때 Tcl_PackageUnloadProcs가 호출됩니까?
"매우 오래"이란 말은 수개월 또는 수년간 지속적으로 실행되는 프로그램을 의미합니다. Tcl은 주요 판매 포인트 인 이국적인 산업용 제어 시스템과 같은 장소에서 사용되는 경향이 있습니다. OTOH, 이것은 또한 이런 종류의 것을 실제로 사용하는 유일한 코드가 엄격하게 상업적 (또한 매우 전문화 된 것)이라는 것을 의미합니다 ... –