У нас есть большой проект. Состоит из екзешника и множества дополнительных dll и bpl. Екзешник, библиотеки и пакеты собраны с рантайм библиотеками. Проект написан на Д5.
Подключаю вместо стандартного дельфового менеджера памяти этот самый FastMMю Подключаю его только в екзешник.
Из опций в файле FastMM4Options.ini в сравнении со стандартными, включил следующие:
{$define NeverUninstall}
{$define UseRuntimePackages}
{$define NoDebugInfo}
{$define NoMessageBoxes}
{$define FullDebugMode}
{$define CatchUseOfFreedInterfaces}
{$define ClearLogFileOnStartup}
После простого запуска программы получаю довольно большой файл отчета об утечках. Но некоторые участки выглядят совсем неинформативно, например:
A memory block has been leaked. The size is: 36
This block was allocated by thread 0x1FD0, and the stack trace (return addresses) at the time was:
40002C3A [System][@GetMem]
40004BB5 [System][@NewAnsiString]
40004B4C [System][@LStrAsg]
303078 [Cmtools][LibraryFunctionRegister]
62E79E8 [WindowsExt.pas][WindowsExt][WindowsExt][5710]
40004630 [System][@TryFinallyExit]
40004806 [System][@StartLib]
62EC5D4 [S4CliPrm][S4CliPrm][29] <- это подгрузка S4CliPrm.dll
77A089D8 [wcsncmp]
77A15C71 [EtwEventRegister]
77A0F658 [RtlImageDirectoryEntryToData]
The block is currently used for an object of class: AnsiString
The allocation number is: 419896
....
Вопрос:
- правильно ли я выставил опции для FastMM для отлова утечек?
- нужно ли подключать модуль FastMM4 также и в каждую из библиотек, чтобы файл отчета был более информативным?
- среди опций FastMM есть группа опций типа ShareMM. Как с ними работать и помогут ли они мне?