It is probably because you are calling ShellExecuteEx(). It seems to initialize the shell class which is used in every shell function. You will also notice this kind of memory usage when you call GetOpenFilename() for a file browser. I have found that memory allocation related to shell functions slowly decrease over time if the calling application sits idle.