0

我在一些 C# 应用程序中看到了 VirtualAlloc/Free windows API 方法的一些用法,我想知道在 C# 中使用这些方法的原因。

VirtualAlloc/Free 对我有什么好处,有什么想法吗?

编辑: VirtualAlloc 会比典型的 .Net “new” 语句或任何其他 .Net 内存分配方法执行得更好吗?

4

2 回答 2

2

我看到的唯一好处是单个托管对象的大小限制为 2GB。如果您使用VirtualAlloc/VirtualFree,您可以管理更大的对象。同时,我建议您HeapAlloc/HeapFree为此目的使用 NT 堆 ( )。

阅读有关内存状态的信息:已提交/保留/空闲。您可以在虚拟分配中使用它们。在极少数情况下,它们很有用。

于 2013-01-06T10:06:35.187 回答
1

需要使用 VirtualAllocEx 的一种情况是当您需要在不同进程的地址空间中分配内存时。我无法想象托管应用程序中 VirtualAllocEx 或 VirtualAlloc 的任何其他用例。

于 2013-01-06T10:28:23.553 回答