使用RTLD_NODELETE进行dlopen会导致内存泄漏,从而导致多次加载库

时间:2017-04-20 04:18:20

标签: c++ c linux systems-programming

我有TCP服务器,它使用共享库名称并使用dl库执行它 由于某种原因(signal handler not called for dlopen or dlclose),我使用dlopen()RTLD_NODELETE,以避免dlclose()来致电。我的问题是  1.以下情况会发生什么:
     - 我第一次打电话给dlopen('myLib.so', RTLD_LAZY | RTLD_NODELETE)      - 我的库已加载并调用foo()中存在的某个函数myLib.so      - 下次我将更新我的foo()定义。然后,如果我拨打dlopen('myLib.so', RTLD_LAZY | RTLD_NODELETE),我的dlopen将加载新库或重新使用旧的  2.假设如果一切顺利,那么dlopen('xxxx.so', RTLD_LAZY | RTLD_NODELETE)如果我使用n数量的库调用xxxx.so a.so可能b.soc.so,则导致内存泄漏, ...n.soRewriteCond %{HTTP_HOST} !^example\.com$ [NC] RewriteCond %{HTTP_HOST} !^webmail\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
已经检查dlopen/dlsym/dlclose (dlfcn.h) causes memory leak,但我的问题是多个共享对象加载

请忽略缩进。我是新手堆叠流量。请不要给出负面标记

0 个答案:

没有答案