c++ - CLR中 native 堆的内存管理

标签 c++ .net c++-cli clr

我想了解 CLR 中 native 堆的内存管理。我知道 CLR 管理堆。例如,我正在使用 C++/CLI 绑定(bind)库,它发展了一些 C++ 库。在其工作期间,C++ 库可以分配对象。这些对象会在 CLR 的 native 堆上分配吗?据我了解,CLR 具有 native 堆和托管堆,它们将在 CLR 运行期间创建。

最佳答案

CLR 没有“ native 堆”。当您在代码中使用 malloc()new 时,您就使用了 C 运行时分配器。与您在 native C 或 C++ 程序中使用的完全相同。对于 VS 版本 2010 或更低版本,它从其自己的堆(使用 HeapCreate 创建)分配,对于 2012 及更高版本,它从默认进程堆(GetProcessHeap)分配。

根本没有“管理”,你负责调用free()delete,就像你在原生C或C++程序中一样。如果不这样做会导致内存泄漏,垃圾收集器根本帮不了你。

关于c++ - CLR中 native 堆的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38396448/

相关文章:

c++ - 您是否推荐在构建时为 C/C++ 启用代码分析?

C++ 重新定义命名空间的变量?

c++ - 在 Swift 项目中使用 C++ 文件

c# - 新的 IntPtr.Add 方法 - 我是否错过了 int 的要点?

c# - Installer工程多次打包文件

winforms - 将 UserControl 添加到表单时 VS2013 挂起

c++ - 如何将使用 boost::asio 的 native C++ 静态库导入 CLI/C++ 混合模式应用程序?

python - 尽管使用 -std=c++11 调用了编译器,但为什么 std::move 未定义?

c++ - 如何使用 C++ 和 Windows API 将击键/消息发送到 Windows 7?

c# - 监控打印