Как использовать FastMM в XE7 C++ Builder для проектов FireMonkey?
Я пытаюсь использовать режим полной отладки FastMM в XE7 C++ Builder, особенно для FireMonkey. Я скачал исходный код и следовал инструкциям, изложенным в "FastMM4BCB.cpp". Чтобы получить компиляцию FastMM, я внес следующие изменения:
- закомментируйте строку 63 в 'FastMM4BCB.cpp', а именно:#pragma option -k- -d -vi- -O2 -b- -3 -a8 -pc -RT- -x -xd -r -AT -vG- -vG0- -vG1- -vG2- -vG3- -vGc- -vGt- -vGd-
- в файле моего проекта добавьте строку: #pragma link "FastMM4BCB" вместо (как описано в "FastMM4BCB.cpp") USEOBJ ("FastMM4BCB.cpp")
С этими изменениями FastMM компилируется и запускается успешно. Тем не менее, он сообщает об утечках памяти даже на пустых проектах (я пробовал FireMonkey и VCL) следующим образом:
- 13-20 байт: неизвестно x 8
- 61-68 байт: неизвестно x 1
- 189 - 204 байта: неизвестно x 1
С проектами VCL я смог использовать режим полной отладки и получить некоторые детали об этих утечках памяти (например):
--------------------------------2014/10/23 16:58:26--------------------------------
A memory block has been leaked. The size is: 20
This block was allocated by thread 0x628, and the stack trace (return addresses) at the time was:
41C897
41C591
415A2D
40E4B1
40E4BB
40EE45
76F73C5A [Unknown function at RtlImageNtHeader]
76FCB19C [Unknown function at RtlUlonglongByteSwap]
76F957CE [RtlLoadString]
76F73CD3 [Unknown function at RtlImageNtHeader]
76F73CD3 [Unknown function at RtlImageNtHeader]
The block is currently used for an object of class: Unknown
The allocation number is: 12
Current memory dump of 256 bytes starting at pointer address 7EF1A160:
80 80 80 80 80 80 80 80 E0 9B F3 7E 80 80 80 80 C3 7E 6A 2C 80 80 80 80 00 00 00 00 80 9F F1 7E
00 00 00 00 00 00 00 00 A8 7A 40 00 00 00 00 00 15 00 00 00 97 C8 41 00 91 C5 41 00 2D 5A 41 00
23 B1 40 00 B1 E4 40 00 BB E4 40 00 6C 60 42 00 F7 F1 40 00 5A 3C F7 76 9C B1 FC 76 CE 57 F9 76
28 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 80 1D 2A E6
80 80 80 80 80 80 80 80 E0 9B F3 7E 80 80 80 80 7F E2 D5 19 80 80 80 80 00 00 00 00 21 AC F1 7E
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 16 00 00 00 97 C8 41 00 91 C5 41 00 2D 5A 41 00
6C 60 42 00 4A F6 40 00 5A 3C F7 76 9C B1 FC 76 CE 57 F9 76 D3 3C F7 76 D3 3C F7 76 FE 3C F7 76
€ € € € € € € € à › ó ~ € € € € Ã ~ j , € € € € . . . . € Ÿ ñ ~
. . . . . . . . ¨ z @ . . . . . . . . . — È A . ‘ Å A . - Z A .
# ± @ . ± ä @ . » ä @ . l ` B . ÷ ñ @ . Z < ÷ v œ ± ü v Î W ù v
( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . € . * æ
€ € € € € € € € à › ó ~ € € € € â Õ . € € € € . . . . ! ¬ ñ ~
. . . . . . . . . . . . . . . . . . . . — È A . ‘ Å A . - Z A .
l ` B . J ö @ . Z < ÷ v œ ± ü v Î W ù v Ó < ÷ v Ó < ÷ v þ < ÷
В пустых проектах FireMonkey возникает (в режиме полной отладки) ошибка нарушения доступа, когда приложение закрывается по шаблону адреса 0x80, как отмечено FastMM. Любая идея, как заставить это работать для FireMonkey и удалить эти ложные положительные предупреждения на пустых проектах? Спасибо