gpt4 book ai didi

c++ - Windows - SQLite 事件临界区

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:17 25 4
gpt4 key购买 nike

我在 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 但没有成功找到泄漏。

有人可以就此问题提供一些指导吗?任何帮助,将不胜感激。谢谢!!

最佳答案

你应该调用sqlite3_shutdown在 dll 上卸载以正确清理它分配的资源(例如在 DLL_PROCESS_DETACH 处理程序中)。

关于c++ - Windows - SQLite 事件临界区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com