跨不同共享库使用的全局变量

时间:2012-01-02 10:47:20

标签: c variables global

我正在使用一个指向链表的全局指针(它包含指向元素的指针和指向下一个节点的指针),该指针由一个DLL初始化。此全局变量在不同的DLL(共享对象)之间共享。

在系统提供全局列表之前,它会被初始化并且所有DLL都具有列表的值。稍后当系统运行时,一个DLL(比如x.so)删除了内存并重新初始化了整个列表,当另一个DLL(比如y.so)尝试读取值时,它总是得到较旧的值。任何线索为什么会发生这种情况以及如何解决这个问题?

我在某处读到堆区域是在DLL之间共享的,我不知道为什么我要面对这个问题。任何帮助都会很明显。

1 个答案:

答案 0 :(得分:0)

堆在同一进程中的DLL之间共享,但不同的进程具有不同的堆。听起来你在DLL中有全局变量加载到不同的进程中。如果没有某种形式的进程间通信,就无法共享。