malloc()和VirtualAlloc()在windows中分配内存有什么不同的属性?

时间:2016-11-14 04:14:58

标签: c windows memory memory-management

VirtualAlloc()将分配一个具有某些属性的虚拟内存页面(通过参数“fdwProtect”)。

malloc()分配的内存怎么样?它是否具有相同的属性?

malloc()的内存是否具有“commintting”或“reserving”的属性?

此外,其他C / C ++ lib函数呢?

1 个答案:

答案 0 :(得分:1)

VirtualAlloc

此功能允许您指定内存分配的其他选项。但它在大页面中分配内存,最小值由GetLargePageMinimum表示,你可以提交,保留它。它不适用于一般用途。 此功能分配的内存自动初始化为零。

的malloc

用于分配内存的标准C版本。如果您使用C而不是C ++编写,并且您的代码需要在其他平台上工作,或者某人明确表示您需要使用它,则更喜欢它。在Windows上,malloc很可能会在HeapAlloc之上实现。 malloc可以分配任何内存块,它没有任何概念来提交和保留当前标准。 此功能分配的内存未初始化。