Izolovat nevracením paměti pomocí třídy PHD

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

194655
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Souhrn
Nevracení paměti jsou problém v mnoho aplikací. Konkrétní způsob určování nevracení paměti je použití třídy Visual C++ PHD poskytnuté v tomto článku. V aplikaci pomocí třídy PHD, protokolování statistiky paměti můžete získat přesnější představu, kde dochází k nevrácení paměti.

Samorozbalovací PHD.EXE je ukázka, která demonstruje použití zahrnuty PHD třídy prokázat/disprove nevracení paměti. Třída PHD je tenký souhrnný kolem funkce pomocník Performance z WINDOWSNT resource kit. Tento kód funguje pouze v systému Windows NT.
Další informace
K dispozici jsou Vám následující soubory ze sekce Ke Stažení:
Datum vydání: X-23-1998

Další informace o tom, jak stahovat soubory podpory společnosti Microsoft, naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
119591Jak získat soubory podpory společnosti Microsoft ze serverů služeb online
Microsoft tento soubor zkontroloval na výskyt virů. Společnost Microsoft použila aktuální antivirový software, který byl k dispozici v den uveřejnění tohoto článku. Soubor je uložený na zabezpečených serverech neumožňujících neoprávněné změny souborů.
V ukázce jsou zahrnuty následující soubory klíče:
    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.				

Použití třídy PHD zahrnout soubor RKLeak.cpp v projektu. Zahrnutím záhlaví souboru způsobí propojení knihovny PDH.lib, což je dodávána s Visual C++ 6.0. Také je třeba přidat vaše cestu souboru PHD.dll, aby aplikace najde.

Soubor TestMain.cpp obsahuje následující ukázkový kód demonstruje použití třídy PHD:

Ukázkový kód

   **************************************************   #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);      }   ***************************************************				

První použití konstruktoru PHD umožňuje určit položky, které chcete sledovat. Tyto jsou stejné položky, které jsou k dispozici v aplikaci Perfmon.exe.

Druhý použití PHD konstruktor (bez argumentů) použije následující výchozí sloupce protokoly: soukromé bajty, stránky souboru bajtů, bajty stránkovaného fondu bajtů nestránkovaného fondu a pracovní sady.

Jak můžete vidět z ukázkový kód třídy PHD používá umístit podezřelou leaking API smyčku a pravidelně volá metodu PHD::logData. Protokolována data do souboru s názvem "< EXE name>_perf.log" v aktuálním adresáři. Pokud výsledný soubor protokolu zobrazuje lineární zvýšení v soukromé bajty, neznamená toto zvýšení nevracení paměti v rozhraní API, ale pouze nevracení paměti v aplikaci. Pokud je rozhraní API je používán nesprávně (například není správně uvolnit prostředky přidělené počáteční volání), výsledky zobrazit pouze nevracení paměti, není vadný API. Zúžit problém vytvořit nejjednodušší možné aplikaci, která zastaralých rozhraní API dotyčný.

Visual C++ 5.x uživatelé potřebují komentář mimo následující řádky z RKLeak.h:
   #undef PdhOpenQuery      //          PdhOpenQueryA   extern "C" long __stdcall   PdhOpenQuery (       IN      LPCSTR      szDataSource,       IN      DWORD       dwUserData,       IN      HQUERY      *phQuery   );				

Ostatní nástroje

Můžete hledat na webu stránek nejčastější dotazy informace o různých ladicí programy třetích stran, které mohou pomoci najít nevracení paměti. Například v následujících ČASTÝCH odkazem několik produktů: Poznámka: Produkty třetích stran zde popsána vyrábějí dodavatelů nezávislé na společnosti Microsoft; neposkytujeme žádnou záruku (implicitně předpokládanou ani jinou) týkající se výkonu nebo spolehlivosti těchto produktů. Měli byste si také poznamenat někdy false sestav nevracení provádět tyto produkty, ale stále jsou velmi užitečné nástroje.

Visual C++ haldy ladění API je také užitečný nástroj pro vyhledání nevrácené. Patří mezi funkce, například _CrtMemDifference() a _CrtMemDumpAllObjectsSince(), které jsou popsány v programu Visual C++ Programmer v části Reference funkce ladění. Tyto funkce pouze rozpoznat nevracení v kódu a nevracení v ostatních součástech.

(c) Microsoft Corporation 1998, všechny rezervované práv. Příspěvky Rick Anderson, Microsoft Corporation.
nevracení zablokuje zmrazen

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 194655 - Poslední kontrola: 03/01/2014 05:47:23 - Revize: 2.5

  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual Studio 97 Service Pack 3
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • kbnosurvey kbarchive kbmt kbdownload kbfile kbinfo kbsample KB194655 KbMtcs
Váš názor