Wird Visual C++ - Speicher vom Dot Net-Framework verwaltet?


1

Kürzlich habe ich mich mit einem Fehler beim Zugriff auf MAPI über das .NET-Framework beschäftigt (wie in this article beschrieben). Ich habe jetzt eine Reihe von Speicherzugriffsverletzungsfehlern.

Um über die Probleme zu kommen, habe ich versucht, this 3rd party component zu verwenden, die einen Visual C++ - Kern hat. Leider - wir haben immer noch die gleichen Fehler.

Ich habe persönlich nie Visual C++ verwendet, aber meine Frage ist: Wenn die C++ - Bibliothek mit Visual Studio 2005, mit Visual C++ kompiliert wird - wird der Speicher des Projekts auch von dem .NET-Framework verwaltet, was würde es daher den gleichen Problemen wie die .NET-Bibliotheken, die wir verwenden, unterwerfen? Oder belle ich den falschen Baum an?

0

Ich bin nicht ganz sicher, was Sie fragen, aber ich werde es versuchen.

Visual C++ ist ein reiner C/C++ - Compiler und hat weder die Speicherverwaltung von .NET noch irgendeine seiner Runtime - Sie müssen manuell neu aufrufen und löschen.

.NET stellt auch C++/CLI bereit, eine leicht modifizierte Version von C++, die auf die .NET-Laufzeit abzielt und GC-bewusst ist - z. Sein Speicher wird von der .NET-Laufzeit verwaltet.

Ohne weitere Details zu Ihrem Programmfehler kann ich keine Vorschläge machen, abgesehen davon, dass Sie sicherstellen, dass Sie die entsprechenden GC-Wächter verwenden und die Finalizer an jedem Ort bereitstellen, an dem sie benötigt werden.


0

Sofern Sie nicht Managed C++ verwenden (was nicht so klingt wie Sie sind), dann nein, der Speicher wird nicht von der CLR verwaltet.

Die empfohlene Methode, mit Exchange in .Net zu kommunizieren, ist über WebDAV.


1

Die beiden vorherigen Antworten haben "Managed C++" erwähnt, dies ist ein alter Bolt-On, mit dem Sie Managed C++ in einer .NET-Umgebung verwenden konnten. Es war kein erstklassiger Bürger - anders als C++/CLI (link text. Aber um Ihre ursprüngliche Frage zu beantworten, nein, Visual C++ wird nicht von der .NET-Laufzeit verwaltet. Verwaltet C++ & C++/CLI sind.