如果有两个程序正在运行,其中一个程序在某个内存地址存储一个数字,如果我知道该内存地址,并将其硬编码到第二个程序中并打印出该地址处的值,它实际上会得到该信息吗? C++ 是否允许程序访问 RAM 中存储的任何数据,无论它是否是程序的一部分?
在没有虚拟内存管理和地址空间保护的系统上,这可以工作。从 C 标准的角度来看,这将是未定义的行为,但它会产生您期望的行为。
坏消息是,现在使用的大多数计算机系统都具有虚拟内存管理和地址空间保护。这意味着内存地址(程序看到的数字)在系统中不是唯一的。系统中的每个进程可能会看到相同的地址,但它会在任何给定时刻映射到计算机上的不同物理地址。操作系统和硬件会给每个进程制造一种假象,认为它可以控制该内存地址,而实际上进程的内存空间不会重叠。
好消息是,现代操作系统支持某种形式的共享内存访问,这意味着一个进程可以与其他进程共享一段内存,并通过在该共享段中读取和写入数据来交换数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)