为什么要改变DLL的基地址?
最近在研究SharpDevelop. 其中Main/ICSharpCode.SharpDevelop.Widgets工程的默认基地址从0x400000改写为0x8240000.请问,为什么要改写这个地址? 谢谢!
[解决办法]
因为同一个进程一般会同时载入多个DLL。如果每个DLL都用VC默认的起始地址,
那么会发生冲突。WINDOWS OS会做额外的工作来解决地址冲突。办法是把 400000的
地址只给一个DLL,把其他DLL加载到其他地址。最大的坏处是加载速度变慢,效率变低。
[解决办法]
是根据重定位表中的几个地址算出来的 装入地址+页地址+页内地址