共享库中单例的多个实例
发布日期:2021-10-16 03:16:09 浏览次数:14 分类:技术文章

本文共 736 字,大约阅读时间需要 2 分钟。

共享库中单例的多个实例

class singleton	{	public:		static singleton* instance()		{			static singleton p;			return &p;		}	private:		singleton(){}	}
template
class CSingleT { public: static T * Instance() { if (!ms_pObject) { ms_pObject = new T; } return ms_pObject; } protected: static T * ms_pObject; } template
T * CSingleT
::ms_pObject = NULL;

模板是编译的时候实例化成“真正的类”,即编译生成动态库的过程中,编译器进行了的实例化过程

在动态链接过程中,在其他库没有发现有singleton::instance这个实例(但是事实上,该实例已经存在了),那么就会自己创建一个实例,这样就导致了多个实例。

使用运行时加载的共享库时必须小心。这样的构造严格不是C ++标准的一部分,您必须仔细考虑这样一个过程的语义是什么。

解决方法

#ifdef SINGLETON_EXPORTS#define SINGLETON_API __declspec(dllexport)#else#define SINGLETON_API __declspec(dllimport)#endif

Linux

-rdynamic 暴露了函数名,共享动态符号表

参考网站

转载地址:https://blog.csdn.net/sinat_31964903/article/details/108969269 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:网站备忘录
下一篇:CMake C++11设置

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月24日 08时16分20秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

collator java_Java Collator getInstance(Locale)用法及代码示例 2019-04-21
dtc mysql_DTCC归来-高可用可扩展数据库架构探讨 2019-04-21
java怎样将日期本土化_Java中的日期操作 2019-04-21
java生产者消费者模型到精通_java生产者消费者模型 2019-04-21
java 执行 awk_3.1 biostar lesson3 linux学习日记;java版本;awk 2019-04-21
python函数代码块以什么开头_Python初体验-开篇 代码全析 2019-04-21
java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc 2019-04-21
java中的无效的列类型_java.sql.SQLException: 无效的列类型: 1111 2019-04-21
php rewrite url_PHP_URL Rewrite的设置方法,URL Rewrite需要服务器的支持! - phpStudy 2019-04-21
php读取大文件某行内容,PHP读取和修改大文件的某行内容_PHP教程 2019-04-21
打印php错误日志,php怎样打印错误日志 2019-04-21
mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析 2019-04-21
php页面引用公共文件,WeiPHP插件模板中快速引入公共模板文件 2019-04-21
php tracy,admin.php 2019-04-21
php访问父类的所有属性,php – 在父类中使用$this仅在子类中显示父类属性 2019-04-21
oracle比较强大的函数,SQL和ORACLE函数比较 2019-04-21
oracle12c order by,oracle 数据库中order by 的一些高级用法 2019-04-21
oracle8i substr,Oracle中的INSTR,NVL和SUBSTR函数的用法详解 2019-04-21
导出oracle11g的空表,轻松解决oracle11g 空表不能 exp 导出 的问题。 2019-04-21
php把整数拆分成数组,数组拆分处理(整数时的处理),该怎么处理 2019-04-21