今天我看到一段C++代码,用于在从EXE加载DLL后实例化驻留在DLL中的类
extern "C"
{
DLL_EXPORT MyClass *CreateClass()
{
static char classBuffer[sizeof(MyClass)];
return new ((void*)classBuffer)MyClass();
}
}
我不明白为什么这里我们不直接使用new运算符,而是首先声明静态缓冲区,然后再将其与类实例化一起使用。任何帮助都将不胜感激。
MyClass
的static
变量并返回指向它的指针将使其表现得像单例模式。上面的代码很糟糕,因为每次调用函数时都会调用MyClass
构造函数并使用放置 new 来重复初始化相同的缓冲区。但是,也许作者就是有意这样做的。如果不知道用例是什么,就无法确定。 - Praetorian