Войти

С помощью класса докторскую степень по выявление утечек памяти

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

194655
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
Утечки памяти являются проблемы во многих приложениях. Конкретный способопределения утечек памяти является использование класса докторскую степень по Visual C++Приведенные в этой статье. Выполнив вход статистика памяти приложенияс помощью класса докторскую степень по, можно получить более точное представление о место утечка памятипроисходит.

Самораспаковывающийся докторскую степень по.EXE — это пример, который демонстрирует использованиевключить докторскую степень по класс доказать/disprove утечка памяти. Имеет докторскую степень по классуТонкие обертки для вспомогательных функций производительность систем Windows NTпакет Resource kit. Этот код работает только в Windows NT.
Дополнительная информация
Следующие файлы доступны для загрузки МайкрософтЦентр загрузки:
Дата выпуска: Окт-23-1998

Для получения дополнительных сведений о том, как загрузить файлы поддержки Майкрософт щелкните следующий номер статьи базы знаний Майкрософт:
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.				

Для работы с классом докторскую степень по включите в проект файл RKLeak.cpp. Пофайл заголовка, в том числе вызовет компоновка библиотеки PDH.libкоторый поставляется с Visual C++ 6.0. Также необходимо добавить в файл PHD.dllна пути к приложению будет найти его.

Файл TestMain.cpp содержит следующий образец кода, демонстрирующийкак использовать класс докторскую степень по:

Пример кода

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

Первое использование конструктора докторскую степень по позволяет указать, какие элементы вытребуется наблюдать. Это те же элементы, доступные вПриложение Perfmon.exe.

Второй способ использования конструктора докторскую степень по (без аргументов) использует следующиепо умолчанию столбец журналы: байтов исключительного пользования, байт файла подкачки, байты выгружаемого пула, пулабайт в невыгружаемом страничном и рабочего набора.

Как видно из примера кода, докторскую степень по класс используется для размещениявызывает API возможную утечкой памяти в цикле и периодически PHD::logDataметод. Данные заносятся в файл с именем «<your exe="" name="">_perf.log» втекущий каталог. Если полученный файл журнала показывает линейное увеличениебайтов исключительного пользования, это увеличение не означает, что утечка памяти в API, нопросто утечку памяти в приложении. Если используется интерфейс API неправильно(например, освободив неправильно ресурсы, выделенные первоначальноговызова), в результатах отображаются только утечки памяти, не неисправный API. Чтобы сузить областьпроблемы создайте простой возможности приложения, пользующеесяв вопросе API.</your>

Пользователи 5.x Visual C++ необходимо закомментировать следующие строки из RKLeak.h:
   #undef PdhOpenQuery      //          PdhOpenQueryA   extern "C" long __stdcall   PdhOpenQuery (       IN      LPCSTR      szDataSource,       IN      DWORD       dwUserData,       IN      HQUERY      *phQuery   );				

Другие средства

Можно найти на веб-страницах часто задаваемые вопросы о различных третьей-отладчики сторонних производителей, которые помогут вам найти утечки памяти. Напримерследующие часто задаваемые вопросы упоминание нескольких продуктов:Примечание Продукты независимых производителей, рассматриваемые здесь упомянутынезависимыми производителями. Мы не дает никаких подразумеваемых и прочихчто касается производительности или надежности этих продуктов. Следует также отметитьИногда, эти продукты можно сделать отчеты об утечке, но онипо-прежнему являются очень полезные инструменты.

Кроме того API отладки кучи Visual C++ является полезным инструментом для поискаутечки. К ним относятся функции, такие как _CrtMemDifference() и_CrtMemDumpAllObjectsSince(), описанные в Visual C++Руководство программиста в разделе Отладка ссылка на функцию. Эти функциитолько обнаружение утечки в коде и не утечки в другие компоненты.

(c) Корпорация Майкрософт 1998 г. все права защищены. Отчисления по РикКуликов, корпорация Майкрософт.
Утечка зависает замороженные

Предупреждение: эта статья переведена автоматически

Свойства

Номер статьи: 194655 — последний просмотр: 02/23/2014 01:11:30 — редакция: 4.0

  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB194655 KbMtru
Отзывы и предложения