实验目的:
通过系统调用实现获取当前正在运行的进程占用系统中的内存资源的最大值,
由于涉及到系统库中的API 所以将其归类为kernel方向。
实验思路:
希望本程序可以被 windows 和 linux/unix 所兼容,所以编程实现时过程中通过宏定义
方法来判断当前平台类型,然后根据不同的平台类型调用不同的系统 API 来得到系统的参数。
但是在代码中仅给出 window 下面的代码及说明(使用 #ifdef 来分辨平台在 vs2012 中没有调试成功)
实验环境:
vs2012 , c++
实验代码:
//memChecker.h
#ifndef MEMCHECKER_H
#define MEMCHECKER_H
namespace memChecker
{
long get_maxMem_kb () ;
}
#endif //MEMCHECKER_H
//memChecker.cpp
#include "memChecker.h"
#include <Windows.h>
#include <Psapi.h>
using namespace memChecker;
long memChecker::get_maxMem_kb()
{
PROCESS_MEMORY_COUNTERS pmc ;
GetProcessMemoryInfo(GetCurrentProcess() , &pmc, sizeof(pmc));
return pmc.PeakWorkingSetSize / 1024 ;
}
//Ma

本文介绍了如何通过系统调用来获取当前进程在Windows系统下的内存占用情况,目标是实现兼容Windows和Linux/Unix的程序。代码中展示了在VS2012环境下使用C++的实现,但未提供Linux下的实现部分,指出需要进一步学习宏定义来实现平台识别。
最低0.47元/天 解锁文章
2415

被折叠的 条评论
为什么被折叠?



