Windows – 64位大型mallocs
malloc()会失败的原因是什么,特别是在64位?
我的具体问题是尝试在64位系统上配置一个巨大的10GB大块RAM. 如果您使用了32位(或31)位的可用地址空间,我可以想象一个malloc失败的32位,这样就没有足够大的地址范围来分配给您的请求. 如果您用完了物理RAM和硬盘驱动器交换空间,我也可以想象malloc失败.对我来说不是这样. 但是为什么malloc也可能失败?我不能想到其他原因. 我对一般的malloc问题比我的具体例子更感兴趣,我可能会替代内存映射文件.失败的malloc()只是一个比其他任何东西更难的东西…,希望了解你的工具,而不是让基础知识感到惊讶.
malloc尝试分配一个连续的内存范围,这首先是由于交换内存的工作原理(至少在我记得的时候)才会在真正的内存中.可能很容易的是,您的操作系统有时无法找到10gb的内存的连续块,并且仍然将所有需要真正内存的进程同时留在RAM中(此时您的malloc将失败).
你实际上是否需要10gb的连续内存,或者你能够围绕几个更小的块包装一个存储类/结构体,而不是使用你的内存块呢?这放宽了巨大的连续需求,并且还应允许您的程序使用交换文件来使用较少使用的块. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- microsoft-office-365 – 是否可以在Office 365上查看登录历
- .net – 如何显示Windows 7样式的上下文菜单?
- windows – 无法连接到真实的www.google.com
- Meteor作为本机OSX或Windows 8应用程序
- 更改Windows中符号链接的目标
- 本地windows上安装protobuf和thrit环境
- windows – 如何在vim中键入某些命令,如CTRL-] ^ Wc等在德语
- windows – 根据IP地址远程获取计算机名称的最佳方法是什么
- windows – 关于进程’地址空间中的NULL指针分配分区的问题
- 使用Interop.domino.dll的C#控制台应用程序 – 在作为计划任