作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
如果我查看 Linux (x86_64) 上 64 位进程的内存映射,我发现 a.out 映射到相当低的内存中:
$ cat /proc/1160/maps
00400000-004dd000 r-xp 00000000 103:03 536876177 /usr/bin/bash
006dc000-006dd000 r--p 000dc000 103:03 536876177 /usr/bin/bash
006dd000-006e6000 rw-p 000dd000 103:03 536876177 /usr/bin/bash
006e6000-006ec000 rw-p 00000000 00:00 0
00e07000-00e6a000 rw-p 00000000 00:00 0 [heap]
7fbeac11c000-7fbeac128000 r-xp 00000000 103:03 1074688839 /usr/lib64/libnss_files-2.17.so
7fbeac128000-7fbeac327000 ---p 0000c000 103:03 1074688839 /usr/lib64/libnss_files-2.17.so
我想在内存的最低部分映射一个 2G 内存区域,但必须将其放在这些 a.out 映射之后的区域中,进入第二个 2G 区域。
这里的 a.out 是否被映射为 x86_64 ABI 的一部分,或者可以使用以下方法之一将该加载地址移动到不同的区域:
?
最佳答案
是的。将 Linux x86-64 应用程序构建为位置无关的可执行文件将导致它及其堆与 libc 和其他库一起映射到高端内存。这应该会留下 2GB 以下的空间供您免费使用。 (但是,请注意,内核可能会保护前 64KB 左右的内存不被映射,以保护它免受某些攻击;查找 vm.mmap_min_addr
以获取信息。)
要将您的应用程序构建为与位置无关的可执行文件,请将 -pie -fPIE
传递给编译器。
关于linux - 有没有办法在 linux x86_64 "high memory"中加载 a.out?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40183002/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!