CLR中本机堆的内存管理

时间:2016-07-15 12:43:44

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

我想了解CLR中本机堆的内存管理。我知道CLR已经管理了堆。例如,我正在使用C ++ / CLI绑定库,它会演变一些C ++库。在其工作期间,C ++库可以分配对象。这些对象是否会在CLR的本机堆中分配?据我所知,CLR具有本机和托管堆,这些堆将在CLR运行期间创建。

1 个答案:

答案 0 :(得分:2)

CLR没有"本机堆"。在代码中使用malloc()new时,可以使用C运行时分配器。与您在本机C或C ++程序中使用的完全相同的一个。对于VS版本2010或更低版本,从其自己的堆(使用HeapCreate创建)分配,对于2012和更高版本,从默认进程堆(GetProcessHeap)分配。

没有"管理"根本就是,你负责调用free()delete,就像你在本地C或C ++程序中一样。如果不这样做会导致内存泄漏,垃圾收集器根本无法帮助您。