Root > Advanced topics > Memory leaks detection limitations

Memory leaks detection limitations

Previous pageReturn to chapter overviewNext page   

The EurekaLog memory leaks detection has some limits, which derives from its internal structure.


EurekaLog detects the memory leaks at the application's exit, so at this state the program has just freed all its non-static resources (resources allocated at run-time as objects created with the Create constructor, variables allocated with the GetMem function, etc).


This technique generating the following limitations:

1. Enabling memory leak detection has little performance penalty (no more than about 5% for memory operations), because EurekaLog needs to build call stack for each memory allocation;
2. Enabling memory leak detection has little memory usage penalty (about 200 bytes for each memory allocation on x86-32 and about 400 bytes on x86-64);
3. Memory leak report automatically hides Assembler and CPU sections;
4. EurekaLog will not execute standard events during processing memory leak reports (this is because required resources was freed);
5. Call stack for memory leak is limited to 35 entries;
6. Memory leaks detection works only for standard Delphi's heap / memory manager (i.e. GetMem/FreeMem/ReallocMem); it can not find leaks with other memory managers (like HeapAlloc/HeapFree or VirtualAlloc/VirtualFree). Use resource leaks ability for that.
7. EurekaLog is unable to show human-readable call stack if DLL which created leak has been unloaded (this limitation is applicable only for applications with installed shared memory manager).
8. If you use shared memory manager - you must compile all modules with same memory manager settings. If you don't use shared memory manager - there is no additional limitations.
9. (C++ Builder only) "Dynamic RTL" is not supported in C++ Builder. If you enable "Dynamic RTL" option - EurekaLog's memory features will be disabled.



See also:

Send feedback... Build date: 2023-09-11
Last edited: 2023-09-04
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.

Permanent link to this article: