une - Comment obtenir l'utilisation de la mémoire sous Windows en C++




realloc c exemple (4)

J'essaie de savoir combien de mémoire ma demande utilise dans le programme lui-même. L'utilisation de la mémoire que je recherche est le nombre indiqué dans la colonne "Utilisation" de l'onglet Processus du Gestionnaire des tâches de Windows.

https://code.i-harness.com


Essayez de jeter un oeil à GetProcessMemoryInfo . Je ne l'ai pas utilisé, mais il ressemble à ce dont vous avez besoin.


GetProcessMemoryInfo est la fonction que vous recherchez. Les documents sur MSDN vous dirigeront dans la bonne direction. Obtenez les informations que vous voulez dans la structure PROCESS_MEMORY_COUNTERS que vous transmettez.

Vous devrez inclure psapi.h.


Pour compléter la réponse de Ronin, indead la fonction GlobalMemoryStatusEx vous donne les compteurs appropriés pour dériver l'utilisation de la mémoire virtuelle pour le processus appelant: il suffit de soustraire ullAvailVirtual de ullTotalVirtual pour obtenir la mémoire virtuelle allouée. Vous pouvez vérifier cela pour vous-même en utilisant ProcessExplorer ou quelque chose.

Il est déroutant que l'appel système GlobalMemoryStatusEx ait malheureusement un but mixte: il fournit à la fois des informations spécifiques au système et spécifiques au processus, par exemple des informations sur la mémoire virtuelle.


Un bon point de départ serait GetProcessMemoryInfo , qui signale diverses informations de mémoire sur le processus spécifié. Vous pouvez passer GetCurrentProcess() tant que handle de processus afin d'obtenir des informations sur le processus appelant.

Probablement le membre WorkingSetSize de PROCESS_MEMORY_COUNTERS est la correspondance la plus proche du coulmn d'utilisation de Mem dans le gestionnaire de tâches, mais il ne sera pas exactement le même. J'expérimenterais les différentes valeurs pour trouver celle qui correspond le mieux à vos besoins.





memory-management