如果通过dlopen和dlclose机制使用共享库(或DLL),并且如果创建的共享库有一些全局变量,其内存来自堆,那么当调用dlclose时这些变量和内存会发生什么?
如果在同一个进程中再次调用dlopen,那么行为是什么?
我必须将我的应用程序拆分为几个逻辑模块。
mainapp:
module1.somodule2.somodule3.so每个模块都是一个*.so库,将在运行时加载。
每个模块共享相同的接口并返回一些数据数组。例如:
int *ptr = module1->getIntData();
可以在mainapp一边释放/删除此内存吗?
int *ptr = module1->getIntData();
delete ptr; //(or free(ptr))
Run Code Online (Sandbox Code Playgroud)
malloc/free 实现怎么样。有没有可能,那个库会使用另一个然后是 mainapp?