XE7 C++ ビルダー、特に FireMonkey で FastMM フル デバッグ モードを使用しようとしています。ソース コードをダウンロードし、「FastMM4BCB.cpp」に記載されている手順に従いました。FastMM コンパイルを取得するために、次の変更を加えました。
- 「FastMM4BCB.cpp」の 63 行目をコメント アウトします。これは次のとおりです。 #pragma option -k- -d -vi- -O2 -b- -3 -a8 -pc -RT- -x -xd -r -AT -vG- -vG0- -vG1- -vG2- -vG3- -vGc- -vGt- -vGd-
- プロジェクト ファイルに次の行を追加 します。
これらの変更により、FastMM は正常にコンパイルおよび実行されます。ただし、次のように、空のプロジェクトでもメモリ リークが報告されます (FireMonkey と VCL の両方を試しました)。
- 13~20バイト:不明×8
- 61~68バイト:不明×1
- 189~204バイト:不明×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 プロジェクトでは、FastMM によってマークされたアドレス 0x80 パターンでアプリを閉じると、(完全なデバッグ モードで) アクセス違反エラーが発生します。FireMonkey で機能させ、空白のプロジェクトでこれらの誤検知アラートを削除する方法はありますか? ありがとう