当我使用C / C ++编写一个简单的程序时,我得到的地址范围是多少? 我的意思是,我可以指向我想要的任何地方......比如:
void* ptr = (int*)0xFFFFFFFF;
指针实际指向哪里?我想它不是主内存中的真实地址,而只是我程序的“封面”地址。
任何人都可以向我解释一下吗? 运行我自己的C程序时,我得到的地址范围(例如在windows中)是多少? 如果我愿意,我真的可以访问其他程序的地址范围吗?
谢谢!
答案 0 :(得分:3)
您的程序在虚拟地址空间中运行,指针指向虚拟内存中的位置。所以不,你不能指望用一个与另一个程序中的数字值相同的数字值,并让它们都指向相同的实际内存。相反,如果你这样做,你的程序可能会崩溃或行为异常(但要注意:它是未定义的行为,所以任何事情都可能发生,而且它依赖于平台)。
答案 1 :(得分:1)
您无法访问其他程序的内存。操作系统将它们分开。唯一可行的方法是通过一些正式的机制,如共享内存或某种物理内存映射。
答案 2 :(得分:0)
有关Windows操作系统中虚拟地址空间的更多信息:http://www.tenouk.com/WinVirtualAddressSpace.html