C/Visual C - Memoria Disponible

 
Vista:

Memoria Disponible

Publicado por Pavel Hernandez (2 intervenciones) el 17/06/2004 19:48:17
Muchos saludos para todos. Tengo un problema con un proyecto que me han asignado en la universidad. Tengo que hacer un programa que maneje una lista, la cual se la va ir agregando informacion. Cada vez que se le agregue algo a la lista, el programa debe saber cuanta memoria disponible hay en el ordenador. Mi problema es que no se que funcion me puede devolver la cantidad de memoria disponible en C/C++. Si alguien puede ayudarme de verdad se lo agradesco.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Solución usando Win32

Publicado por s (1 intervención) el 18/06/2004 15:41:02
Hola.

Tengo una solución para saber la memoria libre usando windows de 32 bits.

Creas una variable como la de abajo:

MEMORYSTATUS meminfo;

ahora mandas llamar a la siguiente función:

GlobalMemoryStatus(&meminfo);

(Por cierto, no olvides incluir la cabecera <windows.h>)

La estructura MEMORYSTATUS tiene los siguientes elementos:

typedef struct _MEMORYSTATUS { // mst
DWORD dwLength; // sizeof(MEMORYSTATUS)
DWORD dwMemoryLoad; // percent of memory in use
DWORD dwTotalPhys; // bytes of physical memory
DWORD dwAvailPhys; // free physical memory bytes
DWORD dwTotalPageFile; // bytes of paging file
DWORD dwAvailPageFile; // free bytes of paging file
DWORD dwTotalVirtual; // user bytes of address space
DWORD dwAvailVirtual; // free user bytes
} MEMORYSTATUS, *LPMEMORYSTATUS;

Como puedes notar (perdona el inglés, pero creo que son sencillos los terminos ) aparecen información relacionada con la memoria, en especial, la cantidad libre de la misma, tal como querias.

¿Problemas?. Depende. La función GlobalMemoryStatus(&meminfo) es una llamada al sistema operativo Windows. Lo cual quiere decir que tu compilador debe ser capaz de hacer este tipo de llamadas. El único compilador en que he probado esto es Visual C++ 6.0., aunque tal vez pueda funcionar en versiones anteriores.

Si estas desarrollando tu programa para MS-DOS o Linux, desafortunadamente no te puedo ayudar más. Cualquier duda con la función anterior, en el foro te pueden ayudar.

Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Solución usando Win32

Publicado por Pavel Hernandez (2 intervenciones) el 18/06/2004 19:02:53
Muchisimas gracias por la informacion, la verdad me he de mucha utilidad. Aunque estoy interesado en una funcion bajo MS-DOS por que el programa lo tengo que hacer en un compilador de C un poco viejo. Pero de todas manera mucha gracias por tu tiempo, me fue de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Revisa esto en www.programmersheaven.com

Publicado por s (16 intervenciones) el 19/06/2004 02:00:53
Hola.

Ahora que mencionas que es para MS-DOS me acordé de una pagina que tiene fragmentos de código en C/C++ un poco viejos. En particular encontré un programa con el título de "C function returns memory available on far heap" que aunque no se si funcione correctamente creo que te puede dar una idea de como encontrar la memoria libre.

El programa está en esta pagina

http://www.programmersheaven.com/zone3/cat482/index.htm

Checa la pagina, tiene muchos fragmentos de códigos varios.

Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar