I have been using Purify and Valgrind to debug memory leaks in C/C++ programs both in open source projects and for some clients.
For practical reasons both have the same functionality and are able to debug the same problems (memory leaks and invalid access to memory regions)
If you are developing any C/C++ code and doing any allocation in the heap (either using malloc() or other means like new) you must run always your code through either these power debuggers that will almost always find any problems in your code.
If you need any help do not hesitate to contact me. I will help you with your code.
For Java, I recommend the great free open source Eclipse Memory Analyzer that will for sure help you plug the leak.