What is the best tool to detect memory leaks.
Both free and not Free.
Thanks
You can easily integrate into RAD Studio and find memory leaks within your Delphi and C++Builder applications. Deleaker shows allocated memory, objects, handles, and GDI resources. That means you can find all the issues within your RAD Studio.
Using Memory Profilers Memory profilers are tools that can monitor memory usage and help detect memory leaks in an application. Profilers can also help with analyzing how resources are allocated within an application, for example how much memory and CPU time is being used by each method.
The best approach to checking for the existence of a memory leak in your application is by looking at your RAM usage and investigating the total amount of memory been used versus the total amount available. Evidently, it is advisable to obtain snapshots of your memory's heap dump while in a production environment.
The most popular Valgrind tool is Memcheck, a memory-error detector that can detect issues such as memory leaks, invalid memory access, uses of undefined values and problems related to allocation and deallocation of heap memory.
FastMM is a free (source available) memory leak detector, already integrated in the latest Delphi versions. I never had a need for anything else.
It's much better BTW to limit the possibilities of memory leaks when coding, instead of finding them later. Some tips:
Always use try and finally in your code to free created objects. Better to write this code immediately, and then write code to use the objects. Even better to make use of IDE functionality like Code Templates.
Only use functions that return dynamically allocated objects when absolutely necessary. It's generally better to pass objects as parameters than create and return them. For example this
procedure getChoices(var AChoices: TStrings);
would be much better than
function getChoices: TStrings;
as there is no potential of accidently leaking the created TStrings object.
We use EurekaLog at our work in Delphi 7. It's an exception handler component which gives very detailed information about exceptions (including callstack! environment variables, etc) even for access violations. But another great feature is that you can tell it to error on memory leaks too, which shows the exact line of code where the memory/object was allocated in the first place! It is a commerical product but I would still highly recommend it.
AQTime is very good. It also does other things like profiling for performance. And it does not require any changes in your code. Of course compiling with debug info helps giving better results.
I would recommend the full FastMM4-version over the version included in Delphi. The full version gives you a full and verbose report logged to file instead of the dialogbox. Combine this with a homebrewed 'memoryleak-logfile-differ' your're all set for an exiting bughunt.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With