【问题标题】:How to solve the global variable problem of shared module?如何解决共享模块的全局变量问题?
【发布时间】:2021-01-08 04:06:22
【问题描述】:

我最近在学习动态链接。 假设我有一个 .so 文件,其中包含一个名为 global 的全局变量。 如果在 prog1 和 prog2 中使用了这个 .so 文件,那么 prog1 和 prog2 怎么会有不同的全局变量副本呢? 如果.so文件也需要使用全局变量,那么如何使用prog1和prog2的不同副本?

【问题讨论】:

    标签: c dynamic-linking


    【解决方案1】:

    全局变量是变量的单个实例,可在每个执行进程(程序)本地的可寻址内存中全局访问。

    如果同一程序的多个实例正在执行,或者这些程序共享一个公共库,它们仍将拥有自己的本地内存,其中包括一个用于全局变量的区域。所以每个程序都有自己的不与其他进程共享的全局变量。因此程序之间没有冲突。

    【讨论】:

    • 但是,可以通过某些属性为使用该库的所有程序定义一个仅存在一次的变量。但这是特例,在源代码中清晰可见。
    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    • 2017-08-19
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多