16.11.2007, 21:06
общий
это ответ
Здравствуйте, Чечулин Андрей!
Неплохо было бы в первую очередь обратиться к MSDN за вопросом;)
Ну да ладно, подскажу. Получить инфо об использовании памяти процессом (как в менеджере задач) можно с помощью стандартной ф-ии GetProcessMemoryInfo().
Описание:
BOOL WINAPI GetProcessMemoryInfo(
HANDLE Process, //Дескриптор нужного нам процесса
PPROCESS_MEMORY_COUNTERS ppsmemCounters, // Указатель на структуру, в которую будет возвращена инфо
DWORD cb //размер передаваемой структуры
);
Вот что нам может рассказать структура:
typedef struct _PROCESS_MEMORY_COUNTERS {
DWORD cb;
DWORD PageFaultCount;
SIZE_T PeakWorkingSetSize;
SIZE_T WorkingSetSize;
SIZE_T QuotaPeakPagedPoolUsage;
SIZE_T QuotaPagedPoolUsage;
SIZE_T QuotaPeakNonPagedPoolUsage;
SIZE_T QuotaNonPagedPoolUsage;
SIZE_T PagefileUsage;
SIZE_T PeakPagefileUsage;
} PROCESS_MEMORY_COUNTERS, *PPROCESS_MEMORY_COUNTERS;
Из всех полей, вам нужно WorkingSetSize - размер занимаемой процессомпамяти в БАЙТАХ. Описание остальных полей вы легко найдете в MSDN.
Пример функции, возвращающей объем занимаемой памяти текущего процесса в приложении...
P.S. Не забудьте подключить к проекту psapi.h и прилинковать psapi.lib
Успехов!
Приложение:
unsigned long GetAppMemUsage(){ PROCESS_MEMORY_COUNTERS pmc; pmc.cb = sizeof(pmc); GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc)); return pmc.WorkingSetSize;}