共享内存如何在DLL中运行?
当DLL附加到进程时,它使用与进程相同的内存地址.假设我们在DLL中有以下函数:
int * data = 0;
int foo()
{
if (!data) data = new int(random());
return *data;
}
Run Code Online (Sandbox Code Playgroud)
当进程A调用此函数时,它会创建新对象(int)并返回其值.但是现在进程B附加了这个DLL.它调用foo()但我不明白它data是如何工作的,因为它正处于进程中'一个内存空间.B怎么能直接使用它?