My .NET application has access to a c++ API via a .NET Assembly. Lets assume I do not correctly release unmanaged resources/objects in my Dispose method.
Is the memory increasing only in the application.exe or can the memory leak also go outside the application.exe, so I can be sure when the application exits that I get all memeory back?
In the .exe process.
You can use perfmon to monitor the process, and in the case of an unmanaged memory leak you will see the counter for total memory go up, but the .NET memory will remain the steady.
Use these PerfMon counters to do that:
Process/Private Bytes, .NET CLR Memory/# Bytes in All Heaps,
In the case of an unchecked unmanaged memory leak (ie you continuously leak memory) your application will eventually crash.
And see this thread for more: Detecting memory leak in mixed environment(Managed-Unmanaged)