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

问题描述:

我试图追踪旧C代码(不是由我写的)中的段错误问题。段错误仅在该代码中某些变量的地址超过32位整数限制时才会发生。 (所以我有一个很好的主意有什么问题,但我不知道在哪里。)如何强制Linux在高(64位)地址空间中分配内存

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

我正在运行Ubuntu 10.04,内核2.6.31-23-通用戴尔inspiron 1525笔记本电脑与2GB RAM,如果这是任何帮助。

在此先感谢, 马丁。

+1

您是否尝试过[valgrinding](http://www.valgrind.org)问题? – 2011-05-04 20:04:52

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

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