Visual C++ 메모리는 Dot Net 프레임워크로 관리됩니까?
-
09-06-2019 - |
문제
최근에 .NET 프레임워크를 통해 MAPI에 액세스할 때 오류가 발생했습니다(아래 설명 참조). 이 기사).이제 일련의 메모리 액세스 위반 오류가 남았습니다.
문제를 해결하기 위해 다음을 사용하려고했습니다. 이 타사 구성요소, Visual C++ 코어가 있습니다.불행하게도 여전히 같은 오류가 발생하고 있습니다.
저는 개인적으로 Visual C++를 사용해 본 적이 없지만 제 질문은 다음과 같습니다.C++ 라이브러리가 Visual Studio 2005, Visual C++를 사용하여 컴파일된 경우 프로젝트의 메모리도 .NET 프레임워크에 의해 관리됩니까? 따라서 우리가 겪고 있는 .NET 라이브러리와 동일한 문제가 발생하게 됩니다. 사용 중?아니면 내가 잘못된 나무를 짖고 있는 걸까요?
해결책
무엇을 질문하시는지 잘 모르겠지만 한번 시도해 보겠습니다.
Visual C++는 순수 C/C++ 컴파일러이므로 .NET의 메모리 관리나 런타임이 전혀 없습니다. 수동으로 new를 호출하고 삭제해야 합니다.
.NET은 또한 .NET 런타임을 대상으로 하고 GC를 인식하는 C++의 약간 수정된 버전인 C++/CLI를 제공합니다.해당 메모리는 .NET 런타임에 의해 관리됩니다.
귀하의 버그에 대한 자세한 내용이 없으면 적절한 GC 가드를 사용하고 필요한 곳에 종료자를 제공하도록 제안하는 것 외에는 어떤 제안도 할 수 없습니다.
다른 팁
이전 두 답변에서는 "관리형 C++"를 언급했는데, 이는 .NET 환경에서 관리형 C++를 사용할 수 있도록 하기 위해 수행한 오래된 추가 기능입니다.C++/CLI(링크 텍스트.하지만 원래 질문에 대답하자면 아니요, Visual C++는 .NET 런타임에서 관리되지 않습니다.관리형 C++ 및 C++/CLI가 있습니다.
Managed C++(실제로는 그렇지 않은 것 같지만)를 사용하지 않는 한 메모리는 CLR에 의해 관리되지 않습니다.
.Net에서 Exchange와 통신하는 권장 방법은 WebDAV를 이용하는 것입니다.