同一个dll文件在不同的进程中映射的基地址为什么可能不同?
动态库 dll在内存中不是只有一个版本,为什么同一个dll文件在不同的进程中映射的基地址为什么可能不同?
听说:隐性联接(implicitly link)的动态联接库 和 动态加载该dll文件 可能产生如上不一致情况,但是我使用MessageBox 试验却发现2个地址是一致的
#include <stdio.h>
#include <time.h>
#include <windows.h>
int main(int argc, char* argv[])
{
printf("MessageBox GetProcAddress:%0p\n", MessageBox);
return 0;
}
int main(int argc, char* argv[])dll?映射?基地址?不一致
{
HINSTANCE hUser32 = LoadLibrary("User32.dll");
DWORD dwMessageBox = (DWORD)GetProcAddress(hUser32, "MessageBoxA");
printf("dwMessageBox GetProcAddress:%0p\n", dwMessageBox);
return 0;
}