ShellExecute和ShellExecute存在内存泄漏

 

症状

某程序执行一段时间后,内存被大量占用,且任务管理器中查看所有程序使用内存总和与内存实际占用量不符。

问题

经验证,当程序内调用ShellExecute和ShellExecuteEx时,会由系统在程序外部分配内存,并与程序关联,且仅在程序退出时释放。

如果频繁调用,将占用大量外部内存。

由于这些内存是程序外分配的,所以内存泄漏工具无法检测、任务管理器中也无法看到内存占用。

解决方法

减少使用次数。