【问题标题】:What different attributes between malloc() and VirtualAlloc() to allocate a memory in windows?malloc() 和 VirtualAlloc() 在 windows 中分配内存有什么不同的属性?
【发布时间】:2017-03-27 16:19:22
【问题描述】:

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

malloc() 分配的内存呢?属性一样吗?

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

还有,其他 C/C++ lib 函数呢?

【问题讨论】:

  • malloc() 使用的内存在某个时间点由 VirtualAlloc() 分配。如果您想确切了解 C 运行时使用的属性,可以查看 CRT 源代码。不过,它肯定会被承诺;只能使用已提交的内存。你到底想达到什么目的?听起来你做错了。
  • 没有C/C++语言!
  • @HarryJohnston 谢谢你的建议
  • @Olaf 抱歉。如果你说我的最后一行,我的意思是 C 或 C++。如果您对上述问题有所了解,请给一些建议,谢谢。
  • 函数是C,不是C++!

标签: c windows memory memory-management


【解决方案1】:

VirtualAlloc

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

malloc

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2014-05-22
    • 2019-11-18
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多