C/Visual C - _graphgetmem y _getfreemem

 
Vista:

_graphgetmem y _getfreemem

Publicado por Túrin (5 intervenciones) el 12/03/2001 12:47:10

O creo que se llamam así. Mi problema es que cuando se carga el sistema gráfico se acaba el programa y me dice: Not enough
memory to load graphics driver.
Creo que el problema es que carga los datos en memoria dinámica (heap) y estos son demasiados. Las funciones predeterminadas
citadas anteriormente tengo entendido que le dicen al programa que utilize una determinada memoria de más para los procesos. Sin
embargo me han dicho que si quiero decirle puede cojer mucha más debo escribir en el programa las funciones éstas pero creadas
por mí mismo. Pero, no sé cómo hacerlo. Alguien me dice cuál es el código? Quiero decirle que le ofrezco 20 megas. Muchas grácias!

Perdón por el doble mensaje, me equivoqué en el título!
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
Imágen de perfil de Alejandro

Asignar más memoria al cargar el sistema gráfico utilizando _graphgetmem y _getfreemem

Publicado por Alejandro (913 intervenciones) el 09/09/2024 18:08:31
Aquí tienes una posible solución para asignar más memoria al cargar el sistema gráfico utilizando las funciones `_graphgetmem` y `_getfreemem`:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <graphics.h>
 
int main() {
    // Inicializar el modo gráfico
    int gdriver = DETECT, gmode;
    initgraph(&gdriver, &gmode, "");
 
    // Obtener la cantidad de memoria disponible
    unsigned long availableMemory = _graphgetmem();
 
    // Verificar si hay suficiente memoria disponible
    unsigned long requiredMemory = 20 * 1024 * 1024; // 20 megabytes en bytes
    if (availableMemory < requiredMemory) {
        printf("No hay suficiente memoria disponible para cargar el sistema gráfico.\n");
        return -1;
    }
 
    // Asignar más memoria al sistema gráfico
    _setvideomode(_VRES16COLOR, _VRES16COLOR);
 
    // Realizar las operaciones necesarias con el sistema gráfico
 
    // Restaurar el modo de texto
    _setvideomode(_DEFAULTMODE);
 
    return 0;
}

En este ejemplo, utilizamos las funciones `_graphgetmem` y `_setvideomode` de la biblioteca `graphics.h` para obtener la cantidad de memoria disponible y asignar más memoria al sistema gráfico, respectivamente.

Primero, inicializamos el modo gráfico utilizando la función `initgraph`. Luego, utilizamos `_graphgetmem` para obtener la cantidad de memoria disponible en bytes. Comparamos esta cantidad con la memoria requerida (20 megabytes en este caso) y, si no hay suficiente memoria disponible, mostramos un mensaje de error y salimos del programa.

Si hay suficiente memoria disponible, utilizamos `_setvideomode` para asignar más memoria al sistema gráfico. En este ejemplo, se establece el modo de video a 16 colores.

Después de asignar más memoria al sistema gráfico, puedes realizar las operaciones necesarias con él. Finalmente, utilizamos `_setvideomode` nuevamente para restaurar el modo de texto predeterminado.

Recuerda que estas funciones son específicas de la biblioteca `graphics.h` y pueden variar dependiendo del compilador y la plataforma que estés utilizando.

Espero que esta solución te sea útil para asignar más memoria al cargar el sistema gráfico utilizando `_graphgetmem` y `_setvideomode`. ¡Buena suerte, Túrin!
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