You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非PIE可执行文件是否一定会被操作系统加载到其预设基地址?

可执行文件加载地址确定性解答

这个加载地址的确定性并非由操作系统无条件提供保证,具体情况需要结合可执行文件的编译属性、系统配置判断:

  • 针对编译时关闭了位置无关属性的普通可执行文件:编译阶段就已经固定了程序各段的预期加载基址,只要该地址没有被系统预留、或被其他进程资源占用,操作系统会按照编译时指定的地址完成段加载,此时加载地址是确定的。
  • 针对编译时开启了位置无关属性的PIE(位置无关可执行文件):目前主流操作系统默认都会开启ASLR(地址空间布局随机化)防护,加载时操作系统会随机选择可用地址区间完成加载,此时不存在固定的预期加载地址,加载地址是完全不确定的。

即使是普通非PIE可执行文件,如果编译时指定的基地址出现冲突,部分操作系统也会自动调整加载地址避免冲突,并不会强制加载到不可用的预期地址。
不同操作系统的具体行为也有差异:

  • Linux系统下:默认编译生成的非PIE可执行文件加载地址固定,PIE可执行文件默认随机化加载地址,你可以通过修改/proc/sys/kernel/randomize_va_space内核参数关闭ASLR,关闭后PIE文件也会被加载到固定地址。
  • Windows系统下:未开启动态基址选项的EXE文件加载地址固定,开启动态基址的EXE文件加载时会被系统随机分配基地址。

内容的提问来源于stack exchange,提问作者Aaa Bbb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:06:01