【问题标题】:very large memory allocation in 64-bit linux64位Linux中非常大的内存分配
【发布时间】:2011-05-27 23:12:39
【问题描述】:

我正在尝试在 centos 64 位 linux 上分配一块非常大的内存 (>2.5gb)。硬件拥有超过 16GB 的物理内存。但是,当我使用 malloc 或 calloc 时,它们返回 null。该代码在 root 帐户中运行,据我使用 ulimit 检查,内存分配没有限制。可能是什么问题?

谢谢。

见面

【问题讨论】:

  • 你有一个 64 位的程序,对吧?
  • 你可以分配的最大内存是多少?
  • 我猜。我正在使用 icc(intel c 编译器)进行编译并使用 intel64 环境变量。我猜它编译为 64 位,我该如何检查?
  • 对可执行文件运行file
  • 文件向我显示以下内容:重新排序:ELF 64 位 LSB 可执行文件,AMD x86-64,版本 1 (SYSV),适用于 GNU/Linux 2.6.9,动态链接(使用共享库),适用于GNU/Linux 2.6.9,未剥离

标签: memory 64-bit malloc calloc


【解决方案1】:

谷歌 sbrk 例程,它会帮助你。

【讨论】:

  • 我做了,但 malloc 没有做所有需要的事情吗?我应该考虑自己打电话给 sbrk 吗?
  • 不,malloc 应该没问题。总而言之,正如你所看到的,人们都认为它应该按照你描述的方式工作。既然不行,肯定是有什么你没有告诉我们的(比如代码中的bug)。
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2021-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多