【发布时间】:2014-08-28 00:01:25
【问题描述】:
我正在开发一个处理不同变量和函数地址的 c++ 程序。
当我在基于 Linux 的操作系统上编译我的程序时,包括 main 在内的所有函数都获得 1 的地址,而不是像其他变量那样的 8 位十六进制数字,这在 Windows 中没有发生。
我写了一小段代码来解释这个问题
#include <iostream>
using namespace std;
void Function1();
void Function1(){
}
int main(){
int tmp;
void (*a) ()=&Function1;
cout<<a<<endl;
cout<<&Function1<<endl;
cout<<&main<<endl;
return 0;
}
对于所有 3 个 cout 调用,输出为 1 而不是虚拟地址。
【问题讨论】:
-
“这在 Windows 中没有发生” 应该做到了。
-
@LightnessRacesinOrbit 我刚试过,确实没有,VS2013
-
@0d0a: 嗯,VS2012 一样。这是其中一个错误。 stackoverflow.com/q/25540033/560648
-
请修正缩进
标签: c++ printing cout virtual-memory