[Aporte][C++] Obtener memoria RAM (Física) total y disponible
-------------------------------------------------------------------------------------------------
¡Holas! Como verán, el nuevo foro de Programación, recién ha empezado. Pero, nos estamos esforzando para aportar todo lo que podamos!
¿Qué necesitamos para esto?
- Visual Studio 2010
- Experiencia medio-avanzada de C++
Documentación adicional
- http://msdn.microsoft.com/en-us/library/aa366770(v=vs.85).aspx
- http://msdn.microsoft.com/en-us/library/aa366589(v=vs.85).aspx
Código RAM Disponible
PHP:
#pragma once
#include <Windows.h>
#include <stdio.h>
#define DIV 1024
int main()
{
MEMORYSTATUSEX RAMDisp;
RAMDisp.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&RAMDisp);
DWORDLONG RAMDisponible = RAMDisp.ullAvailPhys;
printf("RAM Disponible: %d Bytes (B)\n", RAMDisponible);
printf("RAM Disponible: %d Kilobytes (KB)\n", RAMDisponible/DIV);
printf("RAM Disponible: %d Megabytes (MB)\n", RAMDisponible/DIV/DIV);
printf("RAM Disponible: %d Gigabytes (GB)\n", RAMDisponible/DIV/DIV/DIV);
system("pause");
return 0;
}
Aquí creamos una estructura MEMORYSTATUSEX con nombre "RAMDisp"MEMORYSTATUSEX RAMDisp;
Este sería el tamaño de la estructura en Bytes.RAMDisp.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&RAMDisp);
Llamamos a la función GlobalMemoryStatusEx que se encarga de obtener la información de la RAM y la memoria virtual.
DWORDLONG RAMDisponible = RAMDisp.ullAvailPhys;
Ahí creamos un DWORDLONG con nombre "RAMDisponible" y de valor le ponemos RAMDisp.ullAvailPhys que es la que se encarga de obtener la información de la RAM Disponible.
Nota: Los /DIV sirven para dividir el valor que se obtuvo para pasarlo de bytes a kilobytes, etc
Código RAM Total
PHP:
#pragma once
#include <Windows.h>
#include <stdio.h>
#define DIV 1024
int main()
{
MEMORYSTATUSEX RAMTtl;
RAMTtl.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEx(&RAMTtl);
DWORDLONG RAMTotal = RAMTtl.ullTotalPhys;
printf("RAM Total: %d Bytes (B)\n", RAMTotal);
printf("RAM Total: %d Kilobytes (KB)\n", RAMTotal/DIV);
printf("RAM Total: %d Megabytes (MB)\n", RAMTotal/DIV/DIV);
printf("RAM Total: %d Gigabytes (GB)\n", RAMTotal/DIV/DIV/DIV);
system("pause");
return 0;
}
Explicación
Es lo mismo que lo de arriba nada mas que cambiamos los "RAMDisp" por "RAMTtl", los RAMDisp.ullAvailPhys por RAMTtl.ullTotalPhys y unos textos.
Nota: Los /DIV sirven para dividir el valor que se obtuvo para pasarlo de bytes a kilobytes, etc
-------------------------------------------------------------------------------------------------
¡Espero que les aya gustado el aporte! Si les gustaría que mejorara algo, solo díganmelo.
Todo mi código, esta comentado. Está prohibida la reproducción parcial o total del contenido sin derechos de autor.
Última edición: