繁体   English   中英

程序地址范围

[英]Program address range

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

void* ptr = (int*)0xFFFFFFFF;

该指针实际指向何处? 我猜它不是主存储器中的实际地址,而只是我程序的“覆盖”地址。

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

谢谢!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM