Loup&卡普 2023-08-29 02:15 采纳率: 66.7%
浏览 51
已结题

linux 下 卸载动态库 数据未重置

windows平台上 同一份代码 卸载动态库 再重新加载 库里的数据会重置,但是 linux 下卸载动态库 重新加载 数据还是上次的数据 使用的是Ubuntu,使用的语言是C++ 没有用QT,是想知道 linux 下 如何重置so里的数据

动态库加载是使用的 dlopen ,动态库中有很多的对象,很多的全局变量,很多的全局结构体,windows 上卸载了再加载能够重置,但是linux下卸载再加载还是上次的数据

我如果知道有哪些变量需要重置,如何重置,我就不会提这个问题了

  • 写回答

14条回答 默认 最新

  • 前网易架构师-高司机 优质创作者: 人工智能技术领域 2023-08-29 09:22
    关注

    看你是那种方式调用动态库:
    1.通过头文件包含和库路径包含的方式来加载so,所以内存中的数据通常是在so加载时初始化的,而且它的内存布局这些都是分配好的。
    2.dlopen显式加载动态库
    所以需要看你的加载动态库这块的逻辑是怎么写的,其实重置数据有很多种方式,比如信号捕获的方式来重置,不一定是so的问题

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月30日
  • 修改了问题 8月29日
  • 修改了问题 8月29日
  • 修改了问题 8月29日
  • 展开全部