我有一个 Windows 多线程控制台应用程序,似乎每分钟左右泄漏大约 4kb 的私有内存。
为了定位泄漏,我逐渐暂停了应用程序中的每个线程,直到泄漏停止,令我惊讶的是,罪魁祸首似乎是一个名为“Win32Thread”的线程。
它看起来不像我明确启动的线程。
如果我附加并中断应用程序,堆栈跟踪如下所示:
ntdll.dll!_KiFastSystemCallRet@0()
ntdll.dll!_NtCancelTimer@8() + 0xc bytes
ntdll.dll!_RtlpResetTimer@12() + 0x15 bytes
> ntdll.dll!_RtlpServiceTimer@12() + 0xfd bytes
ntdll.dll!_KiUserApcDispatcher@16() + 0x25 bytes
kernel32.dll!_BaseThreadStart@8() + 0x34 bytes
有谁知道为什么这会突然泄漏?
该应用程序在 Win2k3 SP2 双核系统上运行了大约 40 小时。
任何想法都将不胜感激。