我一直在尝试访问其他程序使用的内存,我遇到了一些奇怪的(对我而言)结果。 首先,我在我的第一个程序中创建了一个变量,并将其赋值为10.然后我查看了它的地址并将其手动赋予了我的第二个程序中的指针。在那之后我试图降低指针并且(令我惊讶的是)程序没有崩溃。相反,它将derefrenced指针的值打印为0 接下来,我创建了一些其他程序来试验这个。在我的第一个程序中,我创建了一个指针,并为其指定了“new int”。然后我检查了int的地址并手动将其指向我的第二个程序中的另一个指针。现在,当我试图降低我的第二个程序的ptr时,它确实崩溃了。 有人可以解释为什么会发生差异吗?为什么derefrenced指针0? 抱歉可能有一个愚蠢的问题:/
答案 0 :(得分:1)
这是因为您的程序打印的地址是您要查看的虚拟地址。虚拟地址与每个程序的内存空间有关。它们在运行时由操作系统转换为物理内存地址。
因此,您并没有真正从另一个程序访问其中一个程序的实际(物理)内存地址。这也是指针值设置为0的原因。