症状
某程序执行一段时间后,内存被大量占用,且任务管理器中查看所有程序使用内存总和与内存实际占用量不符。
问题
经验证,当程序内调用ShellExecute和ShellExecuteEx时,会由系统在程序外部分配内存,并与程序关联,且仅在程序退出时释放。
如果频繁调用,将占用大量外部内存。
由于这些内存是程序外分配的,所以内存泄漏工具无法检测、任务管理器中也无法看到内存占用。
解决方法
减少使用次数。
某程序执行一段时间后,内存被大量占用,且任务管理器中查看所有程序使用内存总和与内存实际占用量不符。
经验证,当程序内调用ShellExecute和ShellExecuteEx时,会由系统在程序外部分配内存,并与程序关联,且仅在程序退出时释放。
如果频繁调用,将占用大量外部内存。
由于这些内存是程序外分配的,所以内存泄漏工具无法检测、任务管理器中也无法看到内存占用。
减少使用次数。