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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top