DLL中的全局指针



我有一个C++DLL项目,它包含一个dllmain源文件、一个仅包含DLL函数声明的头、一个包含完整函数定义的cpp文件,以及一个指向不同类实例的全局指针。该指针是通过调用Init函数初始化的,其余所有DLL函数都使用该指针,如果尚未分配,则返回错误。

除了依赖用户在完成DLL时调用特定函数(这听起来很糟糕)之外,我如何确保cpp文件中的全局指针被释放?

谢谢。

除了依赖用户在完成DLL时调用特定函数(这听起来像是一个可怕的想法)

考虑到您已经有了Init函数,那么有一个匹配的Free函数是有意义的。

否则你怎么知道用户什么时候用完了库?您可以等到DLL卸载(请参阅DllMain),但到那时,进程可能已经结束。

我想最好的解决方案是完全避免全局指针。创建一个包含其他类和方法的实例的类,并让用户自己创建一个实例(构造函数替换Init,析构函数替换Free)。

当DLL关闭时,将调用参数为DLL_PROCESS_DETACHDllMain;你可以在那里放代码来释放你的全局。

相关内容

  • 没有找到相关文章

最新更新