我在一些C#应用程序中看到了VirtualAlloc / Free Windows API方法的一些用法,我想知道在C#中使用这些方法的原因。
VirtualAlloc / Free对我有什么好处,有什么想法?
编辑:VirtualAlloc的性能是否优于典型的.Net“新”语句或任何其他.Net内存分配方法?
答案 0 :(得分:2)
我看到的唯一好处是单个托管对象的大小限制为2GB。如果您使用VirtualAlloc/VirtualFree
,则可以管理更大的对象。同时我建议您使用NT堆(HeapAlloc/HeapFree
)来实现此目的。
了解内存状态:已提交/保留/免费。您可以在虚拟分配中使用它们。在极少数情况下,它们很有用。
答案 1 :(得分:1)
需要使用VirtualAllocEx的一种情况是需要在不同进程的地址空间中分配内存。我无法想象托管应用程序中VirtualAllocEx或VirtualAlloc的任何其他用例。