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

将只读段复制到RAM后,Linux中程序只读区域是否仍保持只读?

Linux程序加载后内存区域的权限说明
  • 加载器不会把所有内容都设为可写,不同内存段会保留对应的权限属性:
    • .text段:加载到RAM后依然是只读+可执行权限,目的是防止程序意外修改执行代码,同时支持多进程共享同一份.text段的物理内存以节省资源。如果强行修改该段内容,系统会触发段错误(SIGSEGV)。
    • .data段:加载后为可读+可写,存储已初始化的全局变量和静态变量,程序运行期间可正常修改这些数据。
    • .bss段:同样是可读+可写,存储未初始化的全局/静态变量,加载时会被初始化为0,运行中允许修改。
    • 栈(stack):可读+可写,用于存储局部变量、函数调用上下文等,运行中会频繁进行读写操作。
    • 堆(heap):可读+可写,用于动态内存分配(比如malloc/calloc),程序可自由修改该区域内容。

你可以用pmap <进程PID>命令查看目标进程的内存权限分布,输出的权限列会显示r-x(对应.text段)、rw-(对应.data/.bss/栈/堆)等标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 22:10:27