현재 SWIG에서 .NET으로 빌드 된 라이브러리를 사용하고 있습니다. 이 라이브러리에 대한 문서는 생성 된 클래스가 폐기되어야하는지 또는 생성 된 클래스에 대한 정보를 제공하지 않습니다. 또한이 포럼의 소스에서 볼 수없는 자식 요소를 처리하기위한 코드를 추가해야한다는 다른 포럼에 대한 토론을 보았습니다. 이 모든 것의 맨 위에는 라이브러리의 샘플 프로젝트 및 테스트에 using
이 포함되어 있지 않으며 만든 객체를 처리하지 않습니다.SWIG 생성 객체를 처리해야합니까?
'평균'SWIG 개체의 경우 처분해야합니까? 그들은 모두 기본 C++에서 객체를 삭제하는 기본 소멸자가있는 것 같습니다. 그렇다면 그냥 다른 객체로 취급하고 가비지 컬렉터에서 처리 할 수 있습니까 (순환 참조 및 기타 고전적인 메모리 누수와 같이 가비지 컬렉터가 올바르게 처리하지 못하는 것을 제외하면). 어떤 종류의 처분 컨텍스트 또는 무엇인가로이 라이브러리에 모든 호출/오브젝트를 랩핑해야합니다.
원형 참조로 인해 개체가 처리되지 않습니다. – Servy
SWIG가 finalizer를 C# 개체에 추가 했습니까? GC가 모든 경우에 Dispose가 호출되는 것을 보장하지는 않기 때문에 아마도 메모리 누수가 발생합니다. –
SWIG가 랩퍼 작성에 사용 된 방법에 따라 다 (니다. 수동으로 처분해야하는 오브젝트를 래핑하는 데는 많은 가능성이 있습니다[email protected]가 설명하는 것과 동시에 wrapper는 생성 된 코드가 finalizer를 포함하여 올바른 gc를 보장하도록 만들 수 있습니다. –