相关疑难解决方法(0)

64位大型mallocs

malloc()失败的原因是什么,尤其是64位?

我的具体问题是试图在64位系统上使用巨大的10GB RAM.该机器具有12GB的RAM和32 GB的交换空间.是的,malloc极端,但为什么会出现问题呢?这是在Windows XP64中同时包含Intel和MSFT编译器.malloc有时成功,有时不成功,约50%.8GB malloc总是工作,20GB malloc总是失败.如果malloc失败,重复请求将不起作用,除非我退出该过程并再次开始一个新进程(这将成功获得50%的注射).没有其他大型应用程序正在运行 它会在重新启动后立即发生.

我可以想象如果你已经用完了32位(或31位)可用的地址空间,那么malloc会失败32位,这样就没有足够大的地址范围可以分配给你的请求了.

我还可以想象,如果你已经用完物理内存你的硬盘交换空间,malloc会失败.对我来说情况并非如此.

但为什么malloc会失败呢?我想不出其他原因.

我对一般malloc问题比我的具体例子更感兴趣,无论如何我都可能用内存映射文件替换它.失败的malloc()只是一个难题而不是其他任何东西......想要了解你的工具而不是对基础知识感到惊讶.

memory windows malloc 64-bit virtual-memory

17
推荐指数
3
解决办法
1万
查看次数

标签 统计

64-bit ×1

malloc ×1

memory ×1

virtual-memory ×1

windows ×1