LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1028|回复: 1

关于c++的static方法在动态库中的占用问题

[复制链接]
发表于 2009-2-11 18:28:13 | 显示全部楼层 |阅读模式
我有些类,其中的成员方法全是static的。而我的应用程序是一个不停止的服务器,它会动态dlopen不同的动态库,而这些类就分布在这些不同的库中。
现在有人说,定义了static方法,将使该类从第一次static方法被使用起一直到退出始终存在于内存中(虽然只有一个拷贝)。那么在使用动态库技术时,当库被dlclose卸载,该类和所占用的内存空间还会存在吗?
而且我的理解,static方法若是始终存在,应每个方法只占用4字节的内存而已,而调用时最多的占用空间就是4×该类static方法数。是这样吗?
发表于 2009-2-12 09:49:27 | 显示全部楼层
dlopen会增加对共享库的引用计数,dlclose会减少对共享库的引用计数,等到引用计数为0时,操作系统会把该共享库全部free掉,包括它的静态成员。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表