【发布时间】:2012-04-14 23:56:59
【问题描述】:
所以我有一个用 C++ 编写的 DLL。 但是,它使用 GlobalAlloc() 分配内存。为避免内存泄漏,我想跟踪这些分配并在 DLL 销毁时将它们全部取消分配。
有什么方法可以编写一个在我的 DLL 被卸载时调用的函数? 我能想到的一件事是在我的 DLL 中创建一个全局对象并在其析构函数中编写内存释放调用,但这似乎有点过头了。 我的另一个想法是仅依靠操作系统在 DLL 卸载时释放内存,但这似乎很脏。
谢谢
【问题讨论】:
-
在调用 LPCSTR GetCSV() 函数时分配内存。基本上,我将内存从本地 std 字符串复制到我使用 GlobalAlloc() 分配的内存中,只是为了确保我的调用者在函数返回后可以访问内存。我添加了一些代码来清理对 GetCSV() 的旧调用的内存,但我不会处理卸载 DLL 的最终情况,因为这显然是为我自动完成的。这个article(由回答者链接)非常好。