假设我们实现了一个“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));
可以防止这种“攻击”吗?