[英]Global pointer in DLL
我有一个C ++ DLL项目,它包含一个dllmain源文件,一个只包含DLL函数声明的头文件,一个包含完整函数定义的cpp文件,以及一个指向不同类实例的全局指针。 通过调用Init函数初始化此指针,并且所有其余DLL函数都使用指针并返回错误(如果尚未分配)。
除了依赖用户在完成DLL时调用特定函数(这听起来像一个可怕的想法),我如何确保cpp文件中的全局指针被释放?
谢谢。
除了依赖用户在完成DLL时调用特定函数(这听起来像一个可怕的想法)
考虑到你已经有一个Init
函数,有一个匹配的Free
函数是有道理的。
你怎么知道用户何时完成了库? 您可以等到卸载DLL(请参阅DllMain
),但到那时该过程可能无论如何都要结束。
我想最好的解决方案是完全避免使用全局指针。 创建一个包含其他类和您的方法的实例的类,并让用户自己创建一个实例(构造函数替换您的Init
和析构函数替换您的Free
)。
当DLL被关闭,将有一个通话DllMain
用的参数DLL_PROCESS_DETACH
; 你可以放置代码来释放你的全局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.