c++ - 程序地址范围

标签 c++ c

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

void* ptr = (int*)0xFFFFFFFF;

该指针实际上指向哪里?我猜它不是主内存中的真实地址,而只是我程序的“覆盖”地址。

谁能给我解释一下? 运行我自己的 C 程序时,我得到的地址范围是多少(例如在 Windows 中)? 我真的可以访问其他程序的地址范围吗?

谢谢!

最佳答案

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

关于c++ - 程序地址范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159958/

相关文章:

c - 什么是指向整数数组的指针

c++ - 在 C/C++ 程序中使用 Grep 进行模式匹配是否可取?

c++ - 将指向函数的指针分配给指向函数对象的指针的地址

c - 程序正在运行,但测试抛出段错误

c++ - windows平台错误如何解决

使用 decltype(var) 后跟内部类型 "var"时出现 C++11 编译器错误

C++ - 具有下限/上限的循环数组?

c++ - 在 Netbeans 中从 header 切换到 cpp 文件?

c++ - c++中的持久化数据结构

C++ 通过引用传递变量(SFML 窗口)