如何强制linux在高(64位)地址空间中分配内存

时间:2011-05-04 19:48:07

标签: linux memory-management 64-bit

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

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

如果有任何帮助,我在配备2GB内存的Dell inspiron 1525笔记本电脑上运行Ubuntu 10.04,Kernel 2.6.31-23-generic。

提前致谢, 马丁。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我会打开-Wpointer-to-int-cast-Wint-to-pointer-cast警告选项并查看他们发出的任何警告(我相信这些警告包含在64位目标的-Wall中)。原因很可能与此相关,只是审核编译器出现的警告可能比使用调试器更好。