問題タブ [fastmm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1735 参照

c++ - FastMM を C++ Builder プロジェクトに追加する方法は?

構成しようとしていますFASTMM4Builder C++ 6、従った手順は次のとおりです。

  1. sourceforgeから zip をダウンロードしました。
  2. Project -> Options -> Linkerメニューの下でチェックを外し"Use Dynamic RTL"ました。
  3. 内容を解凍し、ファイルをテスト C++ VCL プロジェクトにC:/tools/FASTMM追加しました。FASTMM4.pas
  4. プロジェクトメニューからユニットをコンパイルしFastMM4.hpp、FastMM フォルダーに新しいファイルを取得するだけです。
  5. 私のプロジェクトにファイルを含め、上にFastMM4BCB.cppも書きました。#include <FASTMM4.hpp>
  6. にパスを追加しFastMM_FullDebugMode.dll、インストール ディレクトリのフォルダーにFastMM_FullDebugMode.lib移動FastMM_FullDebugMode.dllしました。BinBuilder C++
  7. {$define FullDebugMode}からの回線を有効にしましたFastMM4Options.inc

何か見逃しましたか?次のエラーが表示されるのはなぜですか?

リンカー エラー

0 投票する
1 に答える
324 参照

delphi - 動的配列を解放した後のブロック フッターの破損

ユーザーがサーバーにログインし、サーバーがユーザー名/パスワードの一致結果に関連する応答を送信すると、このエラーが発生します。応答パケットを持つアレイがエラーの原因です。どうすればこれを修正できるかわかりません。このようなエラーが表示されるのは初めてです。

コード

主な方法

fOnLogin メソッド

FastMM ログ

0 投票する
1 に答える
419 参照

delphi - Delphi XE2 / 64 ビットは、たとえば 1 テラバイトのメモリをターゲットにできますか?

Delphi / FastMM は OS の仕様と同じように対応できますか? http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

私のソフトウェアが 1 テラバイト (Windows 2008 サーバー) にアクセスできるかどうかを顧客から尋ねられたので、疑問に思いました。

0 投票する
1 に答える
213 参照

delphi - レコードへの割り当て時のメモリ リーク

新しいアプリケーションの 1 つがクラッシュする理由を突き止めようとしている間、私は Delphi のメモリ リークを追跡してきました。

私はFastMMの最新バージョンを接続し、結果に取り組んできましたが、簡潔にするために最小限の骨にまで煮詰めた次のことで混乱しています。

2 つの文字列フィールドで定義されたレコードがあります。これらは 2 つの TEdit ボックスから割り当てられ、同時にデータを TListView に書き込みます。キーコードは次のとおりです。

問題は、の値SourceTable/SourceColumnまたは tp^ にあるようです。値。

TList は、終了時に適切に消去されています。割り当てをコメント アウトするtp^.SourceTable/tp^.SourceFieldと、メモリ リークは発生しません。

新年だからかもしれませんが、SourceTable/SourceColumnの解放方法がわかりません...

0 投票する
2 に答える
778 参照

delphi - FastMM 64 ビット「ブロック ヘッダーが壊れています」

最新の FastMM4 4.991、XE2 はメモリ リークを解決しようとしており、FullDebugMode + LogErrorsToFile 設定でこのエラーが発生しました。エラー

コードは非常にシンプルで、いくつかのプロジェクトでエラーなしで使用されました

FastMM は、 または で「メモリ不足」例外を発生させtemp := temp + format('%.2X ', [b]);ます。コール スタックは、_UStrCat、_UStrSetLength、_ReallocMem につながります。常に. パラメータのパラメータは、41 バイトで埋められた 128 バイト長の TBytes 配列のアドレスです ( NativeUInt(@FData[0]) )。メモリ アクセス ブレークポイントを 7FFFFE62540 に配置しようとしました (FastMM メッセージ「ポインタ アドレス 7FFFFE62540 で始まる 256 バイトの現在のメモリ ダンプのアドレス」) に、アプリケーションの開始からこのメモリ ブロックをトレースしました。アドレス 7FFFFE62450 とアドレス 7FFFFE62540 は、FastMM によって ptr + f0 として埋められます ( の場合)。このブロックのコントロール サムをチェックした後、FastMM が失敗します (CPU ウィンドウでトレース)。また、このログ部分を除外しようとしましたが、シンプルで同様の例外が発生しましたformatIntToHexi = 27p1i = 27inheritedオブジェクトの 1 つを作成します (このコードの実行後)。の下でのみ発生しFullDebugModeます。

最後に、同じオプションとFastMM4Options.inc32 ビットでこのプロジェクトをビルドしてチェックしようとしTarget Platformsましたが、エラーはまったくありません。すべて順調。ただし、Windows 7-64 ではデ​​バッグできません。

FastMM にコードのエラーや既知のバグはありますか? 私はそれを追跡するのに 3 日間費やしましたが、他に何をすべきかわかりません (スロットの最初の 4 GB メモリ、4 x 2048 を交換しようとさえしました)。FastMM4 の FastMM_FullDebugMode64.dll と FastMM_FullDebugMode.dll を使用しました。ありがとう。

編集:そのようなことを解決するのはひどいですが、私は自分で戦略を見つけたようです(解決、all in oneOLEまたはDirectモードに応じて異なるクラスと同じオブジェクト、異なるクラスオブジェクトとしてオブジェクトを使用することによって引き起こされるエラーの欠点でした)
1.置くエラーが発生する直前の LogAllocatedBlocksToFile(0, 0) への FastMM4 呼び出し
2. ログで最も近いオブジェクトを見つけます。私にとっては、エラー アドレスの 300 バイト下の $300 バイト近くのアドレスでオブジェクトでした
3. エラー アドレスの近くのゼロ以外の領域にデータ ブレークポイントを配置します (私にとっては) 40 バイト近く下にありました)。256 バイトのような大きな領域が変更によってトリガーされなかったため、いくつかのブレークポイント。この場合、最も近いオブジェクトの末尾 (アドレス + ログによるサイズ) とエラーのアドレスの間の領域でした。
4. ブレークポイントでコードを分析します。
5.何を追跡するかを見つけるために数回実行し、最終的にエラーコードの位置を取得しました。IDE はデータ ブレークポイントを無効にするため、実行ごとにデータ ブレークポイントを再度有効にします。