在C ++中欺骗PODs单身人士

时间:2014-11-20 02:01:03

标签: c++ singleton

假设我们实现了一个“Meyers”Singleton,具有正确删除的复制/赋值运算符,private / deleted构造函数和私有析构函数,它将实例作为

返回
static Singleton& instance()
{
     static Singleton s;
     return s;
}

假设Singleton没有任何指针/动态分配,但只有基本的POD,或者换句话说,默认的复制构造函数(如果已经可用)只使用逐位复制就可以正常工作。那么,是否可以通过memcpy简单地复制它,如

Singleton s = Singleton::instance();
Singleton *scopy = (Singleton*)malloc(sizeof(Singleton));
memcpy(scopy, &s, sizeof(Singleton));

可以防止这种“攻击”吗?

0 个答案:

没有答案
相关问题