【发布时间】:2015-05-14 10:47:43
【问题描述】:
我在 testlib.dll 中使用 SQLite3 3.8.8.2,它有一个导出函数 void DoDBOperation(),它只是打开数据库然后关闭它。我编写了一个 EXE,它使用 LoadLibararyEx() 加载 DLL,调用函数 DoDBOperation(),最后使用 FreeLibrary() 卸载 DLL。我在循环中执行 10000 次导致内存泄漏。
经过调查,我发现每次加载和卸载testlib.dll都会泄漏一个48字节的临界区DS,正如WinDBG在调查堆后报告的那样。 AppVerifier 也报告正在卸载具有活动临界区的库。
如果我静态链接 DLL,则不会发生此类泄漏。我用谷歌搜索了很多但没有帮助。我尝试调试 sqlite3.c 但没有成功找到泄漏。
有人可以就这个问题提供一些指导吗?任何帮助,将不胜感激。谢谢!!
【问题讨论】: