C++/CLI에서 래퍼 클래스 Foo
을 구현한다고 가정 해 보겠습니다. 당연히 dtor (Foo::~Foo
)를 만들면 IDisposable
구현이됩니다."관리되지 않는"메모리를 해제하려면 IDisposable을 구현해야합니까?
IDisposable은 일반적으로 GDI 리소스, 파일 핸들 등 일부 "희소 한"리소스를 즉각적으로 릴리스하는 데 사용됩니다. 그러나 IDisposable이 단순히 메모리를 해제하면 (예 : free
또는 delete
) 간단히 수행하면 안됩니다. 정기적 인 파이널 라이저 (Foo::!Foo
)에서 그럴 때마다?
.NET은 좋아할 때마다 .NET이 메모리를 해제한다는 것을 의미하므로 실제로 메모리를 비우는 것에 대해 세분화 된 제어를 제공하는 이유는 무엇입니까?
그러나 managed.NET 개체를 사용하여 할당을 해제하는 것과 동일한 제어를 기대하지는 않으므로 관리되지 않는 개체를 사용하는 이유는 무엇입니까? .NET 프로그램의 경우 관리되는 개체가 할당량의 대부분을 차지할 수 있으므로 "필요하지 않은 즉시 관리되는 개체"를 해제하지 마십시오. – Ilya