Linux中的malloc() – “无法保证内存确实可用”?
我正在制作一个游戏,将世界划分为描述世界的数据块.我将块保存在动态分配的数组中,因此在初始化世界的数据结构时我必须使用malloc().
阅读
如果Linux设置为使用乐观内存分配,那么这是否意味着它并不总是返回我在调用malloc()时请求的全部内存量? 我读到通过修改内核来禁用乐观内存分配,但我不想这样做. 那么有没有办法检查程序是否已分配所请求的金额? 解决方法
从应用程序的角度来看,这不是您需要处理的事情.不希望被“OOM杀手”杀死的随机进程的用户将通过自身禁用过度使用
echo "2" > /proc/sys/vm/overcommit_memory 这是他们的选择,而不是你的选择. 但从另一个角度来看,这并不重要.典型的“推荐”交换量是如此荒谬,以至于没有合理数量的malloc将无法使用物理存储来支持它.但是,您可以轻松分配这么多(即使使用强制MAP_POPULATE或手动触摸它),以保持系统抖动交换数小时/天/周.没有规范的方法要求系统通知您,如果您想要的内存量将使系统交换陷入困境,则会出错. 整个情况一团糟,但作为应用程序开发人员,您在修复中的角色只是正确使用malloc并检查null返回值.其余的责任在于发行版和内核维护者. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |