【问题标题】:global variable used across different shared libraries跨不同共享库使用的全局变量
【发布时间】:2012-01-02 10:47:20
【问题描述】:

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

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

我在某处读到堆区域是跨 DLL 共享的,但我不确定我为什么会遇到这个问题。任何帮助都将不胜感激。

【问题讨论】:

    标签: c variables global


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,但恐怕只有一个进程运行着不同的dll,它保存着变量的值。
    猜你喜欢
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多