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

C++程序结束后内存地址值是否保留及访问地址报错问题

不同程序间变量是否会继承旧值?

不会。现代操作系统为每个进程提供独立的虚拟地址空间,两个不同程序(进程)的虚拟地址数值即便相同,对应的物理内存也完全隔离。当一个进程结束后,操作系统会回收其占用的物理内存,通常会对内存做清零或其他处理后再分配给其他进程。因此新程序中的未初始化变量B,即便虚拟地址和旧程序的A相同,也不会继承A的旧值。

直接访问指定内存地址触发段错误的原因

你代码中访问的0x0001FBDC属于非法内存地址:

  • 该地址未被操作系统映射到当前进程的有效地址空间中;
  • 即便地址数值存在,也可能属于内核空间(用户态进程无访问权限),或者未分配物理内存。

现代操作系统通过内存保护机制,会阻止进程访问未授权或未映射的内存,这种非法访问会直接触发段错误(Segmentation Fault)。

你的代码示例:

#include <cstdint>
int main()
{
uintptr_t p = 0x0001FBDC;
int value = *reinterpret_cast<int *>(p);
}

内容的提问来源于stack exchange,提问作者kinan-not-found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:55:34