首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么能导致区段处理泄漏?

问什么能导致区段处理泄漏?
EN

Stack Overflow用户
提问于 2011-10-21 07:53:53
回答 4查看 4K关注 0票数 9

这是my previous question.的后续问题。

正如this answer to my previous question中所建议的那样,我使用ProcessExplorer来分析应用程序用来查找句柄泄漏的句柄列表。

泄漏的句柄是节类型的。

节句柄到底是什么,它在哪里使用,以及什么会导致节句柄泄漏?

我在代码中没有使用内存映射文件.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-21 08:28:34

引用在Windows 2000 (现在称为Windows内部)的话,

-- Win32子系统调用的节对象--文件映射对象,表示两个或多个进程可以共享的内存块。

所以,它是一个内存映射文件。如果您创建了一个内存映射文件,但未能关闭它,它们就会泄漏。很难说得更具体些。

票数 4
EN

Stack Overflow用户

发布于 2011-11-28 11:55:35

结果是,问题出在一个低级函数中,该函数计算当前进程的线程数。此函数使用

代码语言:javascript
复制
CreateToolhelp32Snapshot

返回句柄的API函数,该句柄未正确关闭。不过,我不知道为什么会产生一个段句柄泄漏。

票数 4
EN

Stack Overflow用户

发布于 2011-10-21 14:53:59

与文件句柄无关的内存映射文件可用于IPC (进程之间的通信)。如果您不直接使用它们,可能您的一个单元或组件正在执行某些IPC通信。很可能您使用组件连接到另一个进程,而不按请求释放它。

首先要采取的行动是跟踪任何内存泄漏(使用FastMM4调试模式),您肯定会在代码中找到一些未释放的对象。

由于句柄通常由对象分配,根据我的实验,解决所有内存泄漏将解决句柄泄漏。

如果没有任何内存泄漏,那么在所有源代码(包括第三方源代码)中都会有一些CreateFileMapping()调用来检查相应的CloseHandle()。

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

https://stackoverflow.com/questions/7846526

复制
相关文章

相似问题

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