DLL接口实现可以使用分配构造函数吗?

时间:2016-10-19 15:40:05

标签: c++ memory-management dll com

我正在使用类似COM的界面实现DLL,并且我使用了以下提供的指南:

http://www.codeproject.com/Articles/28969/HowTo-Export-C-classes-from-a-DLL?msg=5315303#xx5315303xx

&安培;&安培;

http://eli.thegreenplace.net/2011/09/16/exporting-c-classes-from-a-dll

通过导出工厂函数GetXyz,它返回对抽象的引用 接口结构如下:

struct IXYZ
{
   virtual void foo(void) = 0;
   virtual void destroy()=0;
}

这是由完整的类XyzImple实现的,

#define XYZAPI __declspec(dllexport)

XYZAPI IXYZ* GetXyz()
{
    return new XyzImple(1,2,3);
}
//
// implementation of foo, jkl, zyx etc... 
//
//Constructor
XyzImple::XyzImple(int a, int b, int c)
{
  m_Zyx = new Zyx(a); // some ultra simple classes..
  m_Jkl = new Jkl(b); 
  m_Inty = c;
}

// 'Destroyer'
XyzImple::destroy() // Called by client side code.
{
    delete m_Zyx;
    delete m_Jkl;
    delete this; // I have seen this in tutorials..
}

DLL工厂函数调用一个动态分配的构造函数是否有任何问题,完全公开这是我的第一个DLL,我想要非常小心内存泄漏等。 请参阅'最佳做法'回答这个问题! 非常感谢!

0 个答案:

没有答案