windows平台上 同一份代码 卸载动态库 再重新加载 库里的数据会重置,但是 linux 下卸载动态库 重新加载 数据还是上次的数据 使用的是Ubuntu,使用的语言是C++ 没有用QT,是想知道 linux 下 如何重置so里的数据
动态库加载是使用的 dlopen ,动态库中有很多的对象,很多的全局变量,很多的全局结构体,windows 上卸载了再加载能够重置,但是linux下卸载再加载还是上次的数据
我如果知道有哪些变量需要重置,如何重置,我就不会提这个问题了
收起
看你是那种方式调用动态库:1.通过头文件包含和库路径包含的方式来加载so,所以内存中的数据通常是在so加载时初始化的,而且它的内存布局这些都是分配好的。2.dlopen显式加载动态库所以需要看你的加载动态库这块的逻辑是怎么写的,其实重置数据有很多种方式,比如信号捕获的方式来重置,不一定是so的问题
报告相同问题?