首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC2008编译的函数,每次运行地址都不一样,该怎么处理

2012-05-16 
VC2008编译的函数,每次运行地址都不一样以下代码在VC2005下函数地址是固定的0x4110e1在VC2008下函数地址每

VC2008编译的函数,每次运行地址都不一样
以下代码在VC2005下函数地址是固定的0x4110e1
在VC2008下函数地址每次运行都不一样,0x3b10e1、0xfd10e1、0x10c10e1等等

C/C++ code
#include <stdio.h>void Fun(){    printf("Fun Address:0x%0x\n", Fun);}int _tmain(int argc, _TCHAR* argv[]){    Fun();    return 0;}




请问造成VC2005和VC2008不同的原因是什么?怎样获取VC2008的编译函数的固定地址?
谢谢

[解决办法]
/DYNAMICBASE:NO
/FIXED:YES
[解决办法]
直接修改文件,OptionalHeader.DllCharacteristics&=~0x0040
在全局范围禁用动态基地址
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
MoveImages=0
[解决办法]
第二种要重启的

热点排行