Управляется ли память Visual C++ платформой Dot Net?
-
09-06-2019 - |
Вопрос
Недавно я столкнулся с ошибкой доступа к MAPI через платформу .NET (как описано в разделе Эта статья).Теперь у меня осталась серия ошибок нарушения доступа к памяти.
Чтобы обойти эти проблемы, я пытался использовать этот сторонний компонент, который имеет ядро Visual C++.К сожалению, у нас все еще возникают те же ошибки.
Лично я никогда не использовал Visual C++, но у меня вопрос:если библиотека C++ скомпилирована с использованием Visual Studio 2005, с использованием Visual C++ - становится ли память проекта также управляемой платформой .NET, что, следовательно, приведет к тем же проблемам, что и библиотеки .NET, которые мы используем? с использованием?Или я лаю не на то дерево?
Решение
Я не совсем понимаю, о чем вы спрашиваете, но я попробую.
Visual C++ — это чистый компилятор C/C++, поэтому в нем нет ни средств управления памятью .NET, ни среды выполнения. Вам придется вручную вызывать new и удалять.
.NET также предоставляет C++/CLI, который представляет собой слегка модифицированную версию C++, предназначенную для среды выполнения .NET и поддерживающую GC, например.его память управляется средой выполнения .NET.
Без более подробной информации о вашей ошибке я не могу дать никаких предложений, кроме предложения вам убедиться, что вы используете соответствующие средства защиты GC и предоставить финализаторы в любом месте, где они необходимы.
Другие советы
В двух предыдущих ответах упоминался «Управляемый C++», это старая добавка, которую они сделали, чтобы позволить вам использовать управляемый C++ в среде .NET.Это не был первоклассный гражданин - в отличие от C++/CLI (текст ссылки.Но отвечая на ваш первоначальный вопрос: нет, Visual C++ не управляется средой выполнения .NET.Управляемый C++ и C++/CLI.
Если вы не используете Managed C++ (что, похоже, не так), то нет, память не управляется CLR.
Рекомендуемый метод взаимодействия с Exchange в .Net — через WebDAV.