J'essaie de connaître la quantité de mémoire utilisée par mon application dans le programme même. L'utilisation de mémoire que je recherche est le nombre indiqué dans la colonne "Utilisation de la mémoire" de l'onglet Processus du Gestionnaire de tâches Windows.
Réponses
Trop de publicités?Un bon point de départ serait GetProcessMemoryInfo, quels rapports différents de la mémoire d'infos sur le processus spécifié. Vous pouvez transmettre GetCurrentProcess()
que le processus de poignée afin d'obtenir des informations sur le processus appelant.
Probablement l' WorkingSetSize
membre de l' PROCESS_MEMORY_COUNTERS
est le plus proche de la Mem Utilisation coulmn dans le gestionnaire des tâches, mais il ne va pas être exactement la même. Je voudrais expérimenter avec les différentes valeurs de trouver celui qui est le plus proche de vos besoins.
Je pense que c'est la chose exacte, tu cherchais ::
#include<windows.h>
#include<stdio.h>
#include<tchar.h>
// Use to convert bytes to MB
#define DIV 1048576
// Use to convert bytes to MB
//#define DIV 1024
// Specify the width of the field in which to print the numbers.
// The asterisk in the format specifier "%*I64d" takes an integer
// argument and uses it to pad and right justify the number.
#define WIDTH 7
void _tmain()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
_tprintf (TEXT("There is %*ld percent of memory in use.\n"),WIDTH, statex.dwMemoryLoad);
_tprintf (TEXT("There are %*I64d total Mbytes of physical memory.\n"),WIDTH,statex.ullTotalPhys/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of physical memory.\n"),WIDTH, statex.ullAvailPhys/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of paging file.\n"),WIDTH, statex.ullTotalPageFile/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of paging file.\n"),WIDTH, statex.ullAvailPageFile/DIV);
_tprintf (TEXT("There are %*I64d total Mbytes of virtual memory.\n"),WIDTH, statex.ullTotalVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of virtual memory.\n"),WIDTH, statex.ullAvailVirtual/DIV);
_tprintf (TEXT("There are %*I64d free Mbytes of extended memory.\n"),WIDTH, statex.ullAvailExtendedVirtual/DIV);
}
Essayez de consulter GetProcessMemoryInfo . Je ne l'ai pas utilisé, mais cela ressemble à ce dont vous avez besoin.