写了一段代码测试了一下,在主程序中对DBAccessLib.dll中的static变量ConnectStr赋值xxx之后,再通过HsInterface.dll访问DBAccessLib.dll中的这个ConnectStr变量,值已变为xxx;在主程序中通过HsInterface.dll对DBAccessLib.dll中的ConnectStr变量赋值yyy,然后在主程序中直接访问DBAccessLib.dll中的ConnectStr变量,值已经变为yyy,说明DBAccessLib.dll被主程序和HsInterface.dll访问的是同一内存区域。
从网上搜到的一句话:
the dll is loaded into each process' private address space, nothing is shared between processes (except for shared sections which u must define explicitly)
如果dll被两个不同的进程加载,那么dll中类的static成员变量肯定就不被共享了。
??
本文探讨了C#编写的DLL(DBAccessLib.dll)中静态变量在不同调用场景下的共享行为,包括直接调用和通过另一个DLL(HsInterface.dll)间接调用的情况,并分析了静态成员变量在不同进程间的共享机制。
2315

被折叠的 条评论
为什么被折叠?



