【问题标题】:how to force linux to allocate memory in high (64bit) address space如何强制linux在高(64位)地址空间分配内存
【发布时间】:2011-05-08 22:17:05
【问题描述】:

我正在尝试查找旧 C 代码(不是我编写的)中的段错误问题。仅当该代码中某些变量的地址超过 32 位整数限制时,才会发生段错误。 (所以我很清楚出了什么问题,但我不知道哪里出了问题。)

所以,我的问题是:有没有办法强制 linux 为高地址空间中的进程分配内存?目前,是否发生段错误几乎取决于概率,这使得调试有点困难。

如果有帮助的话,我正在一台具有 2GB 内存的戴尔灵越 1525 笔记本电脑上运行 Ubuntu 10.04,内核 2.6.31-23-generic。

提前致谢, 马丁。

【问题讨论】:

标签: linux memory-management 64-bit


【解决方案1】:

您可以使用mmap() 系统调用分配一个匿名内存块,您可以将其作为参数传递给您希望它被映射到的位置。

【讨论】:

    【解决方案2】:

    我会打开 -Wpointer-to-int-cast 和 -Wint-to-pointer-cast 警告选项并检查它们出现的任何警告(我相信这些都包含在 64 位目标上的 -Wall 中)。原因很可能与此有关,与使用调试器相比,简单地审核编译器出现的警告可能是一种更好的方法。

    【讨论】:

      猜你喜欢
      • 2013-05-04
      • 2013-08-21
      • 2012-01-22
      • 2018-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 2010-09-07
      相关资源
      最近更新 更多