CLR中本机堆的内存管理
Memory management of native heap in CLR
我想了解 CLR 中本机堆的内存管理。我知道 CLR 管理堆。例如,我正在使用 C++/CLI 绑定库,它发展了一些 C++ 库。在其工作期间,C++ 库可以分配对象。这些对象会在 CLR 的本机堆上分配吗?据我了解,CLR 具有本机堆和托管堆,它们将在 CLR 运行 期间创建。
CLR 没有 "native heap"。当您在代码中使用 malloc()
或 new
时,您就使用了 C 运行时分配器。与您在本机 C 或 C++ 程序中使用的完全相同。对于 VS 版本 2010 或更低版本从其自己的堆(使用 HeapCreate 创建)分配,对于 2012 及更高版本从默认进程堆(GetProcessHeap)分配。
根本没有"management",你负责调用free()
或delete
,就像你在原生C或C++程序中一样。如果不这样做会导致内存泄漏,垃圾收集器根本帮不了你。
我想了解 CLR 中本机堆的内存管理。我知道 CLR 管理堆。例如,我正在使用 C++/CLI 绑定库,它发展了一些 C++ 库。在其工作期间,C++ 库可以分配对象。这些对象会在 CLR 的本机堆上分配吗?据我了解,CLR 具有本机堆和托管堆,它们将在 CLR 运行 期间创建。
CLR 没有 "native heap"。当您在代码中使用 malloc()
或 new
时,您就使用了 C 运行时分配器。与您在本机 C 或 C++ 程序中使用的完全相同。对于 VS 版本 2010 或更低版本从其自己的堆(使用 HeapCreate 创建)分配,对于 2012 及更高版本从默认进程堆(GetProcessHeap)分配。
根本没有"management",你负责调用free()
或delete
,就像你在原生C或C++程序中一样。如果不这样做会导致内存泄漏,垃圾收集器根本帮不了你。