A memória Visual C++ é gerenciada pela estrutura Dot Net?
-
09-06-2019 - |
Pergunta
Recentemente, tenho lidado com um erro ao acessar MAPI por meio do .NET framework (conforme descrito em Este artigo).Agora fico com uma série de erros de violação de acesso à memória.
Para superar os problemas, tenho tentado usar este componente de terceiros, que possui um núcleo Visual C++.Infelizmente - ainda estamos tendo os mesmos erros.
Pessoalmente, nunca usei Visual C++, mas minha pergunta é:se a biblioteca C++ for compilada usando Visual Studio 2005, usando Visual C++ - a memória do projeto também passa a ser gerenciada pelo .NET framework, o que o tornaria sujeito aos mesmos problemas que as bibliotecas .NET que estamos usando?Ou estou latindo para a árvore errada?
Solução
Não tenho muita certeza do que você está perguntando, mas vou tentar.
O Visual C++ é um compilador C/C++ puro, portanto não possui nenhum gerenciamento de memória do .NET, nem seu tempo de execução - você precisa chamar manualmente new e excluir.
O .NET também fornece C++/CLI, que é uma versão ligeiramente modificada do C++ que tem como alvo o tempo de execução do .NET e é compatível com GC - por exemplo.sua memória é gerenciada pelo tempo de execução do .NET.
Sem mais detalhes sobre o seu bug, não posso fazer nenhuma sugestão, além de sugerir que você use os protetores de GC apropriados e forneça finalizadores em qualquer lugar onde forem necessários.
Outras dicas
As duas respostas anteriores mencionaram "C++ gerenciado", este é um complemento antigo que eles fizeram para permitir que você use C++ gerenciado em um ambiente .NET.Não era um cidadão de primeira classe - ao contrário do C++/CLI (Texto do link.Mas, para responder à sua pergunta original, não, o Visual C++ não é gerenciado pelo tempo de execução do .NET.C++ gerenciado e C++/CLI são.
A menos que você esteja usando C++ gerenciado (o que não parece), então não, a memória não é gerenciada pelo CLR.
O método recomendado para conversar com o Exchange em .Net é via WebDAV.