为什么在将字符串压缩为DWORD时在运行时获得不同的值?

Pur*_*ebe 5 c++ casting dword

std::cout << (DWORD)"test";
Run Code Online (Sandbox Code Playgroud)

如果我编译并运行它,我每次都会得到不同的输出值,但我无法弄清楚原因.

有任何想法吗?

PS:我正在使用Windows 7 64位,我正在使用Microsoft Visual C++ 2010 Ultimate进行编译.

Ree*_*sey 4

在您的代码中,“test”实际上是指向字符串开头的指针。当您将其转换为 a 时DWORD,您将指针转换为整数类型,并写出该数字。

由于存储“test”的内存位置可能会随着每次运行而变化,因此您看到的值也会发生变化。

  • 至于*为什么*字符串常量的地址(来自可执行文件的静态数据段)随着每次运行而变化,这可能是由于[地址空间布局随机化](http://en.wikipedia.org/wiki/Address_space_layout_randomization )(ASLR)。 (2认同)