首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET中的VCL (C++Builder) DLL时的资源泄漏

使用.NET中的VCL (C++Builder) DLL时的资源泄漏
EN

Stack Overflow用户
提问于 2010-01-20 20:46:15
回答 1查看 340关注 0票数 0

我有一个用C++Builder (2006)编写的动态链接库,并且我从.NET应用程序中调用了该动态链接库中的一个函数。

问题是,当我关闭.NET应用程序(并且DLL从它分离)时,我得到一个CodeGuard错误,说它检测到资源泄漏(并且我在CodeGuard日志文件中看到了泄漏)。我还看到Visual Studio在释放LoaderLock时弹出DLL MDA (可能是出于同样的原因?)。

现在,我99%确定我正在释放我在DLL函数中使用的所有内存。实际上,我尝试使用完全不执行任何操作的同名函数构建一个虚拟动态链接库,但在从.NET应用程序卸载动态链接库时仍然会发生资源泄漏。

在这一点上,我唯一的怀疑是我使用的是内置在DLL中的VCL。是否有一些未初始化的函数需要在从DLL分离时显式调用?这是怎么回事呢?

附注:CodeGuard日志文件中给出的调用堆栈中的内存地址似乎远远超出了我在映射文件中看到的任何地址。

EN

回答 1

Stack Overflow用户

发布于 2010-01-21 00:06:53

对于我用Delphi研究了一段时间的问题来说,这听起来非常熟悉。我asked the question on,所以有一段时间了。我至少部分追踪到了未被释放的threadvar (线程本地存储)内存。我相信C++Builder和Delphi使用的是相同的VCL组件,所以这可能是同样的问题。不幸的是,我没有找到任何令人满意的解决方案,除了在将来再次加载DLL时不卸载它之外。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2101376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档