程序地址范围

时间:2013-08-10 08:06:19

标签: c++ c

当我使用C / C ++编写一个简单的程序时,我得到的地址范围是多少? 我的意思是,我可以指向我想要的任何地方......比如:

void* ptr = (int*)0xFFFFFFFF;

指针实际指向哪里?我想它不是主内存中的真实地址,而只是我程序的“封面”地址。

任何人都可以向我解释一下吗? 运行我自己的C程序时,我得到的地址范围(例如在windows中)是多少? 如果我愿意,我真的可以访问其他程序的地址范围吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

您的程序在虚拟地址空间中运行,指针指向虚拟内存中的位置。所以不,你不能指望用一个与另一个程序中的数字值相同的数字值,并让它们都指向相同的实际内存。相反,如果你这样做,你的程序可能会崩溃或行为异常(但要注意:它是未定义的行为,所以任何事情都可能发生,而且它依赖于平台)。

答案 1 :(得分:1)

您无法访问其他程序的内存。操作系统将它们分开。唯一可行的方法是通过一些正式的机制,如共享内存或某种物理内存映射。

答案 2 :(得分:0)

有关Windows操作系统中虚拟地址空间的更多信息:http://www.tenouk.com/WinVirtualAddressSpace.html