[Aporte][C++] Obtener memoria RAM disponible y total

OP
Mensajes
1.007
Reacciones
11
Puntos
0
Ubicación
Argentina
[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

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;
}
Explicación

MEMORYSTATUSEX RAMDisp;
Aquí creamos una estructura MEMORYSTATUSEX con nombre "RAMDisp"

RAMDisp.dwLength = sizeof(MEMORYSTATUSEX);
Este sería el tamaño de la estructura en Bytes.

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:
Mensajes
324
Reacciones
6
Puntos
0
Buen aporte, lastima que solo funcione en plataformas windows.
Tal vez, puedes agregar, que DIV es una constante con 1024 de valor(No todos saben)

PD: A que te refieres con esto:
Todo mi código, esta comentado. Está prohibida la reproducción parcial o total del contenido sin derechos de autor.
 
Arriba Pie