Windows - 程序使用了多少内存是没有意义的
Windows - How many memory the program is using makes no sense
我想知道如何知道我的程序实时使用了多少内存。我在 win32 中找到了 PrintMemoryInfo() 函数,并尝试实现它。
代码
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
size_t PrintMemoryInfo()
{
PROCESS_MEMORY_COUNTERS info;
GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) );
return (size_t)info.WorkingSetSize;
}
inline void printIt(){
double memory = (double)PrintMemoryInfo() * 0.001;
printf("%.2f kb\n",memory);
}
int main( void )
{
printIt();
char *i =(char*)malloc(100000);
printIt();
free(i);
printIt();
return 0;
PROCESS_MEMORY_COUNTERS
包含进程的内存统计信息,GetProcessMemoryInfo
用数据填充它。我需要知道程序实际使用的内存大小,所以我使用 WorkingSetSize 来获取它。
微软定义:
WorkingSetSize
当前工作集大小,以字节为单位。
我从字节传递到千字节然后我执行程序我得到这个:
输出
- 1974.27 kb
- 2027.52 kb
- 2035.71 kb
这个程序对我来说毫无意义:
- 几乎 2 MB 的内存用于一个什么都不做的程序?
- 分配了 100 kb 的内存,但程序只多使用了 67 kb。
- 如果我释放了内存,为什么它会长大。
也许我不明白这个函数在做什么,所以有人可以解释一下发生了什么吗?
谢谢!
它是 :
的总和
- 执行文件的大小
- stack memory 你的程序占用你程序中使用的静态变量的内存
- heap memory 你的程序取一个动态变量的内存
- 以及程序中使用的库的大小。
编程 alloc
更多内存,用于构建代码。
我想知道如何知道我的程序实时使用了多少内存。我在 win32 中找到了 PrintMemoryInfo() 函数,并尝试实现它。
代码
#include <windows.h>
#include <stdio.h>
#include <psapi.h>
size_t PrintMemoryInfo()
{
PROCESS_MEMORY_COUNTERS info;
GetProcessMemoryInfo( GetCurrentProcess( ), &info, sizeof(info) );
return (size_t)info.WorkingSetSize;
}
inline void printIt(){
double memory = (double)PrintMemoryInfo() * 0.001;
printf("%.2f kb\n",memory);
}
int main( void )
{
printIt();
char *i =(char*)malloc(100000);
printIt();
free(i);
printIt();
return 0;
PROCESS_MEMORY_COUNTERS
包含进程的内存统计信息,GetProcessMemoryInfo
用数据填充它。我需要知道程序实际使用的内存大小,所以我使用 WorkingSetSize 来获取它。
微软定义:
WorkingSetSize 当前工作集大小,以字节为单位。
我从字节传递到千字节然后我执行程序我得到这个:
输出
- 1974.27 kb
- 2027.52 kb
- 2035.71 kb
这个程序对我来说毫无意义:
- 几乎 2 MB 的内存用于一个什么都不做的程序?
- 分配了 100 kb 的内存,但程序只多使用了 67 kb。
- 如果我释放了内存,为什么它会长大。
也许我不明白这个函数在做什么,所以有人可以解释一下发生了什么吗?
谢谢!
它是 :
的总和- 执行文件的大小
- stack memory 你的程序占用你程序中使用的静态变量的内存
- heap memory 你的程序取一个动态变量的内存
- 以及程序中使用的库的大小。
编程 alloc
更多内存,用于构建代码。