如果 2 个程序正在运行,并且一个程序在内存地址存储一个数字,如果我知道该内存地址,并将其硬编码到第二个程序中并打印出该地址处的值,它实际上会得到那个吗信息? C++ 是否允许程序访问存储在 RAM 中的任何数据,无论它是否是程序的一部分?
最佳答案
在没有虚拟内存管理和地址空间保护的系统上,这会起作用。从 C 标准的角度来看,这将是未定义的行为,但它会产生您期望的行为。
坏消息是现在使用的大多数计算机系统都具有虚拟内存管理和地址空间保护。这意味着内存地址,即您的程序看到的数字,在系统中不是唯一的。系统中的每个进程都可能看到相同的地址,但它会在任何给定时刻及时映射到您计算机上的不同物理地址。操作系统和硬件会给每个进程制造假象,以为它控制了那个内存地址,而实际上进程的内存空间不会重叠。
好消息是现代操作系统支持某种形式的共享内存访问,这意味着一个进程可以与其他进程共享一段内存,并通过在该共享段中读取和写入数据来交换数据。
关于c++ - 我可以在 C++ 程序之外使用随机内存地址访问随机数据吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27539388/