La mémoire Visual C++ est-elle gérée par le framework Dot Net


1

Récemment, j'ai eu affaire à une erreur d'accès à MAPI via le framework .NET (comme décrit dans this article). Je suis maintenant parti avec une série d'erreurs de violation d'accès de mémoire. Pour contourner les problèmes, j'ai essayé d'utiliser this 3rd party component, qui a un noyau Visual C++. Malheureusement, nous avons toujours les mêmes erreurs. Personnellement, je n'ai jamais utilisé Visual C++, mais ma question est la suivante: si la bibliothèque C++ est compilée à l'aide de Visual Studio 2005, en utilisant Visual C++, la mémoire du projet est-elle également gérée par le framework .NET? qui serait donc soumis aux mêmes problèmes que les bibliothèques .NET que nous utilisons? Ou suis-je aboyer le mauvais arbre?

0

Je ne sais pas exactement ce que vous demandez, mais je vais essayer.

Visual C++ est un compilateur C/C++ pur donc n'a aucune gestion de la mémoire de .NET, ni aucune de son exécution - Vous devez manuellement appeler new et delete.

.NET fournit également C++/CLI, qui est une version légèrement modifiée de C++ qui cible l'environnement d'exécution .NET, et est conscient de GC - par exemple. sa mémoire est gérée par le runtime .NET. Sans plus de détails sur votre bogue, je ne peux pas vraiment faire de suggestions, en plus de vous suggérer de vous assurer que vous utilisez les gardes GC appropriés et de fournir les finaliseurs là où ils sont nécessaires.


0

À moins que vous n'utilisiez C++ managé (ce qui ne vous semble pas), alors non, la mémoire n'est pas gérée par le CLR.

La méthode recommandée pour parler à Exchange dans .Net est via WebDAV.


1

Les deux réponses précédentes ont mentionné "Managed C++", il s'agit d'un vieux boulon qu'ils ont fait pour vous permettre d'utiliser C++ managé dans un environnement .NET. Ce n'était pas un citoyen de première classe - contrairement à C++/CLI (link text) Mais pour répondre à votre question initiale, non, Visual C++ n'est pas géré par l'environnement d'exécution .NET C++ & C++/CLI sont