【发布时间】: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:编译器可以随意为堆栈编排内存,因此地址不匹配完全不足为奇。这没有实际意义。如果您对地址有用,只需将其与
&一起使用,它会是正确的(即您可以稍后取消引用它以引用asdf)。您可以信任编译器来确保这一点。比利的俏皮话实际上是对你问题的一个非常合理的比喻。 -
不...你看我的评论在那个上面
标签: c++ visual-studio visual-c++