C语言内存监控
来源:互联网 发布:最离奇的杀人案件知乎 编辑:程序博客网 时间:2024/05/21 06:12
用C语言监控一个进程(比如QQ)的内存占用情况,整合了网上的一些代码。
头文件"process_stat.h"
#ifndef PROCESS_STAT_H
#define PROCESS_STAT_H
#ifdef __cplusplus
extern "C" {
#endif
typedef long long int64_t;
typedef unsigned long long uint64_t;
#ifdef __cplusplus
}
#endif
#endif/*PROCESS_STAT_H*/
主函数
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <psapi.h>
#include <assert.h>
#include "process_stat.h"
#include "tlhelp32.h "
UINT GetProcessIdByName(LPCTSTR pszExeFile)
{
UINT nProcessID = 0;
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)};
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
if (Process32First(hSnapshot, &pe))
{
while (Process32Next(hSnapshot, &pe))
{
if (lstrcmpi(pszExeFile, pe.szExeFile) == 0)
{
nProcessID = pe.th32ProcessID;
break;
}
}
}
CloseHandle(hSnapshot);
}
return nProcessID;
}
int get_memory_usage(uint64_t* mem, uint64_t* vmem)
{
PROCESS_MEMORY_COUNTERS pmc;
UINT ID = GetProcessIdByName(_T("QQ.exe"));
if(GetProcessMemoryInfo(/*GetCurrentProcess()*/OpenProcess(PROCESS_ALL_ACCESS, FALSE, ID), &pmc, sizeof(pmc)))
{
if(mem) *mem = pmc.WorkingSetSize;
if(vmem) *vmem = pmc.PagefileUsage;
return 0;
}
return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
uint64_t mem, vmem, r, w;
get_memory_usage(&mem, &vmem);
printf("内存使用: %u 字节\n", mem);
printf("虚拟内存使用: %u 字节\n", vmem);
return 0;
}
- C语言内存监控
- c语言 内存释放
- C语言:内存使用
- C语言内存分配
- C语言内存分布
- C语言内存管理
- C语言内存分配
- c语言内存分配
- C语言内存管理
- C语言-内存分配
- C语言 内存对齐
- C语言内存分配
- C语言修改内存
- C语言内存分配
- C语言:内存使用
- c语言内存分配
- C语言内存对齐
- C语言内存管理
- CSRF原理剖析
- 职场情商训练 - 下属的工作技巧
- android-gallery游览图片点击图片放大
- 堆排序
- lighttpd+webpy安装实践
- C语言内存监控
- 得到两个日期相差的天数
- 【排序算法】快速排序超级总结
- 获得日期的月份转换成字符显示
- Windows 7 IIS (HTTP Error 500.21 - Internal Server Error)解决
- 游戏行业创业投资 ---成都游戏行业交流会笔记
- [转载] 使用X-UA-Compatible来设置IE8/IE9兼容模式
- android ffmpeg 编译加实例学习总结
- 最小的k个元素