PHD クラスを使用してメモリ リークを特定するのには

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:194655
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
概要
メモリ リークが発生は、多くのアプリケーションで問題です。具体的な方法メモリ リークが発生を決定する、Visual C の PHD クラスを使用するにはこの資料で説明します。メモリ統計情報をアプリケーションにログオンすることでPHD クラスを使用するは、メモリ リークが発生するはより正確な考えを取得ことができます。発生しています。

自己解凍型の PHD で。EXE を使用する方法を例に示します証明 disprove でメモリ リークが発生する付属の PHD クラスです。PHD クラスでは、パフォーマンスのヘルパー関数は、Windows NT からのシン ラッパーリソース キットです。このコードは Windows NT のみで動作します。
詳細
次のファイルをマイクロソフトからダウンロード可能します。ダウンロード センター:
リリース日: 1998-10 月 23 日

マイクロソフトのサポート ファイルをダウンロードする方法の詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
119591 オンライン サービスからマイクロソフトのサポート ファイルを入手する方法
マイクロソフトは、このファイルのウイルスをスキャンしました。マイクロソフトは、ファイルが転記された日付に利用可能な最新のウイルス検出ソフトウェアを使用します。ファイルは、ファイルに不正な変更を防止するのに役立つセキュリティが強化されたサーバーに格納されます。
サンプルでは、次のキー ファイルが含まれています。
    FileName                Description    ---------------------------------------------------------   PDH.dll                  Contains helper functions used by PHD.   RKLeak.cpp               Contains the code for the PHD class.   RKLeak.h                 Header file for the PHD class.   TestMain.cpp             A simple program to demonstrate the PHD class.				

PHD クラスを使用するには、RKLeak.cpp ファイルをプロジェクトに含めます。でヘッダー ファイルを含む、PDH.lib ライブラリへのリンクが、Visual C 6.0 に付属しています。PHD.dll ファイルを追加する必要があります。パスには、アプリケーションを検索するようにします。

TestMain.cpp ファイルには次のサンプル コードが含まれています。PHD クラスを使用する方法。

サンプル コード

   **************************************************   #include "rkLeak.h"   void main()   {      char *myCntrs[]={         "\\Memory\\Available bytes",         "\\Memory\\committed bytes",         "\\Memory\\pool Paged bytes",         "\\Memory\\pool Nonpaged bytes",      };      PHD mphd2(myCntrs,sizeof(myCntrs)/sizeof(myCntrs[0]));      PHD mphd;      const int arSize=4096;      for (int i=0;i<5;i++){         double *d = new double[arSize];         d[0]= 1.;      d[arSize-1] = 2.;  // Force to committed mem.         mphd.logData(i);         mphd2.logData(i);      }   ***************************************************				

PHD コンス トラクターの最初の使用で品目を指定することができます。監視します。これらの同じ項目は、Perfmon.exe アプリケーションです。

PHD コンス トラクター (引数なし) の 2 番目の使用は、次を使用してください。既定列ログ: private bytes、ページ ファイル バイト、ページ プールのバイト、プール非ページ バイトとワーキング セット。

サンプル コードからわかるように、PHD クラスを使用してには、リークが疑われる場合の API をループし、定期的に、PHD::logData を呼び出すメソッドです。データがログに記録されるファイル名に"<your exe="" name="">_perf.log"で、現在のディレクトリです。場合は、ログ ・ ファイルが線形に増加を示しています。プライベート バイトの増加は意味しません、API でメモリ リークが、メモリ リーク アプリケーションだけです。API の使い方が間違っている場合(たとえば、正しくないによって最初に割り当てられたリソース解放します。コール) のみ、メモリ リークが、API は問題がないの結果を示します。限定するには問題を最も簡単な実行可能なアプリケーションを作成します。該当する API。</your>

Visual の C++ 5.x ユーザーは、RKLeak.h から次の行をコメントにする必要があります。
   #undef PdhOpenQuery      //          PdhOpenQueryA   extern "C" long __stdcall   PdhOpenQuery (       IN      LPCSTR      szDataSource,       IN      DWORD       dwUserData,       IN      HQUERY      *phQuery   );				

その他のツール

Web 上で FAQ ページのさまざまな情報を検索できます-メモリ リークが発生をすることができますパーティのデバッガーを検索します。たとえば、次のよく寄せられる質問にいくつかの製品について言及します。メモ ここで説明するサードパーティ製品のベンダーによって製造されていますマイクロソフトは無関係です。お保証、黙示またはそれ以外の場合にありません、これらの製品のパフォーマンスや信頼性についています。注意する必要があります。そのことがありますこれらの製品、リークが、不正確なレポートをすることができます。非常に便利なツールですが。

また、API のデバッグ、Visual C のヒープを検出するための便利なツールです。リークが発生します。これらの関数は、_CrtMemDifference() などがあります、_CrtMemDumpAllObjectsSince() では、Visual C では、記載されています。プログラマ ガイド」を関数参照をデバッグします。これらの関数だけで、コードとその他のコンポーネントでのリークいないリークを検出します。

(c) Microsoft Corporation 1998 年、すべての権利予約します。中田が貢献マイクロソフトでは、鈴木。
リークが固定されているがハングします。

警告: この記事は自動翻訳されています

プロパティ

文書番号:194655 - 最終更新日: 02/22/2014 22:47:37 - リビジョン: 4.0

  • kbnosurvey kbarchive kbinfo kbdownload kbfile kbsample kbmt KB194655 KbMtja
フィードバック