c++ - 仅当达到虚拟限制时内存不足?

标签 c++ c memory-management winapi

据我所知,在 win32 中每个程序都会收到 4GB 的虚拟内存。内存管理器负责将内存块从物理内存卸载到磁盘。

这是否意味着 malloc 或任何其他内存分配 API 仅在达到虚拟限制时才会抛出 OUT_OF_MEMORY 异常?我的意思是即使程序远离其虚拟大小限制,malloc 是否有可能失败,例如没有物理内存可以卸载到磁盘。假设磁盘具有无限容量并且没有设置特定限制。

最佳答案

是的,这是可能的。请记住,内存可能是碎片化的,malloc 将无法找到足够大的 block 来满足您请求的大小。这很容易在您达到 4 GiB 限制之前完成。

关于c++ - 仅当达到虚拟限制时内存不足?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519792/

相关文章:

iphone - cocoa 内存管理

c++ - 我怎样才能在我的罗马数字到十进制转换器中得到结果?

c++ - 如何从文件中读取数据 block ,然后从该 block 读取到 vector 中?

c++ - 如何使用 tolua++ 将 lua 字符串(二进制)传递给 c++

c - USART嵌入C.触发字符存储数组

c - 如何让子进程使用另一个终端输入和输出?

c - 与 Node 和 Node-gyp 一起使用的 AWS Lambda 上出现奇怪的 "memory"行为

C++ 堆栈使用模板化链表 - 内存泄漏

c++ - 加速转换计算

python - 为什么在 C++ 中从 stdin 读取行比 Python 慢得多?