同一个动态链接库里定义的全局变量在不同的应用程序 (进程) 里有各自独立的内存空间,互不影响。
如上图所示项目之间的依赖关系:
- Lib-1 中定义了全局变量 count
- App-1 连接了 Lib-1,访问 count
- Lib-2 连接了 Lib-1,访问 count
- App-2 连接了 Lib-1 和 Lib-2,访问 count
则全局变量 count:
- App-1 中的 count 和 App-2 中的 count 不是同一个变量 (打印出变量的地址看一下,不一样)
- App-2 和 Lib-2 中的 count 是同一个变量,因为他们属于同一个进程
类的静态成员变量也是全局变量,单例可使用类的静态成员变量实现,单例的类可编译成 Lib 提供给其他程序放心的使用,不同程序之间同一个类的单例对象不会互相影响。
LibAndGlobalVariable.7z 是按照上图的依赖关系创建的项目,可以下载来运行观察以便更好的加深印象。