FastMMでバッファオーバーフローしている行を特定したい


たろ  2016-10-13 10:38:09  No: 48349  IP: 192.*.*.*

FastMMを使用してバッファオーバーフロー(以下BOに省略)している行を特定したいです。現在の設定ではBOしたメモリを取得した行はログに残るのですが、実際にBOした行が特定出来ません。FastMM4Options.incのどのオプションを有効にすれば良いかご存じの方はいらっしゃいますでしょうか?一通り目を通したつもりですがそれらしきオプションを見つけることが出来ませんでした。

※実際はC++Builderを使用していますがDelphiの方がFastMMユーザーが多そうなのでこちらで質問させて頂きました。

char *p = (char *)malloc(4); // ←この行(メモリを取得した場所)がログに残る
*(p + 10) = 0; // ←この行(実際にBOした場所)をログに残したい
free(p);

編集 削除
arigayas  2016-10-15 13:17:34  No: 48350  IP: 192.*.*.*

使っているバージョンとエディションを書かれた方が良いと思います。

編集 削除
たろ  2016-10-17 09:18:51  No: 48351  IP: 192.*.*.*

お世話になります。
開発環境は以下のとおりです。

 FastMM 4991
 C++ Builder 5 Pro
 Win 7 Pro SP1 64bit

編集 削除
通りすがり  2016-10-17 17:02:51  No: 48352  IP: 192.*.*.*

回答がつかないのは多分FastMMにそんな機能はないからではないかと(FastMMのオプションはFastMM4Options.incを見るとわかるはず)。
Delphiであれば範囲チェックを有効にすることで配列の範囲外へのアクセスを実行時エラーとすることができますけれども…。
C++BuilderではCodeGuardでどうにかできたりしませんか?

編集 削除
take  2016-10-18 08:38:16  No: 48353  IP: 192.*.*.*

Delphiで同様のコードを記述してFastMMと範囲チェックを付けて範囲外へアクセスしてみましたが
アクセス時はエラーにならず、処理やイベントの終了時に実行時エラーが出るみたいですね。

確保したメモリ量とアクセスする範囲が異なるのは根本的にプログラムのミスですので
ミスの箇所を探す方が良いかと思います。

編集 削除
たろ  2016-10-18 10:11:49  No: 48354  IP: 192.*.*.*

CodeGuardはC++Builderの話になってしまうのであまり深くは言及しませんが
エラーを検出したりしなかったり、
Aaccess Violationを起こしてIDEを不安定にしたりなど問題がありまして
そこらへんの原因が特定できなかったので使用をあきらめました。

また、ソースコードは膨大な量があり、かつ10年以上前に他の人が作成したものなので
FastMMを使って場所を特定出来たら楽かなと思い導入した次第です。

しかし地道に探すしかないですかね・・・

編集 削除