【问题标题】:Visual Studio, interpret address of variable [closed]Visual Studio,解释变量的地址[关闭]
【发布时间】:2014-12-02 05:07:31
【问题描述】:

我正在 64 位系统上进行测试,在 Visual Studio 中,我得到以下代码的以下输出..

#include <iostream>
using namespace std;
int main()
{
    int asdf = 32;
    cout << &asdf;
}

00ACF88C

在带有 -m32 的 GCC 中,我得到 0xfffc1828。这两个地址有什么区别? 0xff 和 00 一样吗?这些是逻辑地址还是物理地址?

【问题讨论】:

  • @user4314270:编译器可以随意为堆栈编排内存,因此地址不匹配完全不足为奇。这没有实际意义。如果您对地址有用,只需将其与&amp; 一起使用,它会是正确的(即您可以稍后取消引用它以引用asdf)。您可以信任编译器来确保这一点。比利的俏皮话实际上是对你问题的一个非常合理的比喻。
  • 不...你看我的评论在那个上面

标签: c++ visual-studio visual-c++


【解决方案1】:

变量放置的地址完全取决于实现。除了您的编译器和平台决定在您运行程序的特定时间用来存储该特定整数的地址之外,这些地址没有什么特别之处。

在具有虚拟内存的系统上,您可以访问的大多数地址(除非您正在编写内核的内存管理单元)都是虚拟地址。

【讨论】:

  • 为什么输出看起来不一样?例如 0xff
  • @user:因为不同的标准库实现选择实现“向控制台写入指针地址”功能略有不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多