【问题标题】:Is Visual C++ memory managed by the Dot Net frameworkVisual C++ 内存是否由 Dot Net 框架管理
【发布时间】:2010-09-06 09:17:18
【问题描述】:
最近,我一直在处理通过 .NET 框架访问 MAPI 时出现的错误(如 this article 中所述)。我现在留下了一系列内存访问冲突错误。
为了解决这些问题,我一直在尝试使用 this 3rd party component,它具有 Visual C++ 核心。不幸的是 - 我们仍然有同样的错误。
我个人从未使用过 Visual C++,但我的问题是:如果 C++ 库是使用 Visual Studio 2005 编译的,使用 Visual C++ - 项目的内存是否也由 .NET 框架管理,这因此会使其受到与我们正在使用的 .NET 库相同的问题吗?还是我找错树了?
【问题讨论】:
标签:
.net
visual-c++
memory
【解决方案1】:
前面的两个答案都提到了“托管 C++”,这是他们为允许您在 .NET 环境中使用托管 C++ 而做的一个旧的补充。它不是一等公民 - 不像 C++/CLI (link text。但要回答你最初的问题,不,Visual C++ 不是由 .NET 运行时管理的。托管的 C++ 和 C++/CLI 是。
【解决方案2】:
我不完全确定你在问什么,但我会试一试。
Visual C++ 是一个纯 C/C++ 编译器,因此没有 .NET 的内存管理,也没有任何运行时——您必须手动调用 new 和 delete。
.NET 还提供 C++/CLI,它是针对 .NET 运行时的 C++ 的略微修改版本,并且是 GC 感知的——例如。它的内存由 .NET 运行时管理。
如果没有关于您的错误的更多详细信息,我真的无法提出任何建议,除了建议您确保使用适当的 GC 保护,并在任何需要它们的地方提供终结器。
【解决方案3】:
除非您使用的是托管 C++(听起来不像),否则不,内存不是由 CLR 管理的。
在 .Net 中与 Exchange 对话的推荐方法是通过 WebDAV。