当我使用 C/C++ 编写一个简单的程序时,我得到的地址范围是多少? 我的意思是,我可以指向任何我想要的地方……比如:
void* ptr = (int*)0xFFFFFFFF;
该指针实际上指向哪里?我猜它不是主内存中的真实地址,而只是我程序的“覆盖”地址。
谁能给我解释一下? 运行我自己的 C 程序时,我得到的地址范围是多少(例如在 Windows 中)? 我真的可以访问其他程序的地址范围吗?
谢谢!
最佳答案
您的程序在虚拟地址空间中运行,指针指向虚拟内存中的位置。所以不,你不能指望在另一个程序中想出一个具有相同数值的指针,并让它们都指向相同的实际内存。相反,如果您这样做,您的程序可能会崩溃或出现其他异常行为(但请注意:这是未定义的行为,因此任何事情都可能发生,并且它取决于平台)。
关于c++ - 程序地址范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159958/