Limpiar imagen de la RAM psp [C]

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

jdelmejor
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 04 Abr 2010, 15:02

Limpiar imagen de la RAM psp [C]

Mensaje por jdelmejor »

Hola, se que hay una funcion para borrar la imagen de la RAM:

freeImage(imagen);

Pero no estoy seguro 100%, asi estaria bien?

Código: Seleccionar todo

Librerias correctas...
---------------------------------------------
int imgmenu
 
int main()
{
pspDebugScreenInit();
initGraphics();
imgmenu = loadImage("Imagenes/Menu.png");
blitAlphaImageToScreen(0 ,0 ,480 , 272, imgmenu, 0, 0);
flipScreen();
freeImage(imgmenu);
return 0;
}


Bastaria con eso ¿no?

O pongo

imgmenu = NULL

Esque quiero estar seguro por si no se borra xD

Salu2 :oki:

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Limpiar imagen de la RAM psp [C]

Mensaje por m0skit0 »

Depende de la librería que estés usando serán unas funciones u otras.
Imagen

jdelmejor
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 04 Abr 2010, 15:02

Re: Limpiar imagen de la RAM psp [C]

Mensaje por jdelmejor »

m0skit0 escribió:Depende de la librería que estés usando serán unas funciones u otras.


Es la libreria: graphics.h

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Limpiar imagen de la RAM psp [C]

Mensaje por m0skit0 »

Eso no es una librería, es un fichero de cabecera :? :roll:

¿De dónde has sacado ese graphics.h?
Imagen

jdelmejor
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 04 Abr 2010, 15:02

Re: Limpiar imagen de la RAM psp [C]

Mensaje por jdelmejor »

m0skit0 escribió:Eso no es una librería, es un fichero de cabecera :? :roll:

¿De dónde has sacado ese graphics.h?


Ah las librerias de makefile ¿no?, estan asi:
lpspgu -lpng -lz -lm -lpspdisplay -lpspgum -lfreetype

Lo de graphics.h, como tu dices sera fichero de cabecera xD.

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Limpiar imagen de la RAM psp [C]

Mensaje por m0skit0 »

Sip esas (las únicas que hay :lol: )

De todas formas, releyendo tu duda, realmente a ti no te importa que la imagen se borre de la RAM. Con que ya no se use/la liberes/se descargue es suficiente. Entiendo que

Código: Seleccionar todo

freeImage(imgmenu);

Libera la imagen y el valor de imgmenu se vuelve indeterminado. Ten en cuenta que liberar no significa borrar los datos en memoria, algo que consume tiempo inútilmente, sino que simplemente se marca dicha zona de memoria como utilizable, con lo que se sobrescribe con otros datos eventualmente. Lo mismo pasa en todas las memorias (por ejemplo los discos duros).

Puedes asignar NULL (después de liberarla claro) si quieres que tenga un valor concreto con el cual comparar si ya está liberada o no. Si lo vas a hacer así también debes darle este valor por defecto en la declaración (o inicializarla más tarde).

Ah, y no uses variables globales :ko:
Imagen

jdelmejor
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 04 Abr 2010, 15:02

Re: Limpiar imagen de la RAM psp [C]

Mensaje por jdelmejor »

m0skit0 escribió:Sip esas (las únicas que hay :lol: )

De todas formas, releyendo tu duda, realmente a ti no te importa que la imagen se borre de la RAM. Con que ya no se use/la liberes/se descargue es suficiente. Entiendo que

Código: Seleccionar todo

freeImage(imgmenu);

Libera la imagen y el valor de imgmenu se vuelve indeterminado. Ten en cuenta que liberar no significa borrar los datos en memoria, algo que consume tiempo inútilmente, sino que simplemente se marca dicha zona de memoria como utilizable, con lo que se sobrescribe con otros datos eventualmente. Lo mismo pasa en todas las memorias (por ejemplo los discos duros).

Puedes asignar NULL (después de liberarla claro) si quieres que tenga un valor concreto con el cual comparar si ya está liberada o no. Si lo vas a hacer así también debes darle este valor por defecto en la declaración (o inicializarla más tarde).

Ah, y no uses variables globales :ko:


A ver, yo lo que quiero es optimizar el programa, para que esa/s imagen ya no "relentice" o crashee la psp por falta de RAM. Esa imagen no la utilizaré mas, entonces, ¿Que es lo recomendable que haga?
Creo entender que seria algo asi:

Código: Seleccionar todo

int main()
{
int imgmenu;
initGraphics();
imgmenu = loadImage("Imagenes/Menumodv2.png");
blitAlphaImageToScreen(0 ,0 ,480 , 272, imgmenu, 0, 0);
flipScreen();
freeImage(imgmenu);
imgmenu = NULL;
return 0;
}

Asi estaria bien, o ¿que me recomiendas que haga?
Salu2, y gracias. ;)

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Limpiar imagen de la RAM psp [C]

Mensaje por m0skit0 »

jesus el mejor escribió: ver, yo lo que quiero es optimizar el programa, para que esa/s imagen ya no "relentice" o crashee la psp por falta de RAM. Esa imagen no la utilizaré mas, entonces, ¿Que es lo recomendable que haga?

Tal y como lo estás haciendo está bien, ya que como te dije con eso liberas la memoria de la imagen. Pero tal y como te dije también

m0skit0 escribió:Puedes asignar NULL (después de liberarla claro) si quieres que tenga un valor concreto con el cual comparar si ya está liberada o no. Si lo vas a hacer así también debes darle este valor por defecto en la declaración (o inicializarla más tarde).

oseáse:

Código: Seleccionar todo

int imgmenu = NULL;
Imagen

jdelmejor
Desarrollador
Desarrollador
Mensajes: 63
Registrado: 04 Abr 2010, 15:02

Re: Limpiar imagen de la RAM psp [C]

Mensaje por jdelmejor »

m0skit0 escribió:Tal y como lo estás haciendo está bien, ya que como te dije con eso liberas la memoria de la imagen. Pero tal y como te dije también

Puedes asignar NULL (después de liberarla claro) si quieres que tenga un valor concreto con el cual comparar si ya está liberada o no. Si lo vas a hacer así también debes darle este valor por defecto en la declaración (o inicializarla más tarde).
oseáse:

Código: Seleccionar todo

int imgmenu = NULL;


OK, entonces quedaria asi ¿verdad? :

Código: Seleccionar todo

int main()
{
int imgmenu;
initGraphics();
imgmenu = loadImage("Imagenes/Menumodv2.png");
blitAlphaImageToScreen(0 ,0 ,480 , 272, imgmenu, 0, 0);
flipScreen();
freeImage(imgmenu);
int imgmenu = NULL;
return 0;
}


Salu2.

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: Limpiar imagen de la RAM psp [C]

Mensaje por m0skit0 »

Nop :lol: Eso te daría un obvio error de compilación sobre que has declarado la misma variable 2 veces. Yo digo esto

Código: Seleccionar todo

int main()
{
    int imgmenu = NULL;
    initGraphics();
    imgmenu = loadImage("Imagenes/Menumodv2.png");
    blitAlphaImageToScreen(0 ,0 ,480 , 272, imgmenu, 0, 0);
    flipScreen();
    freeImage(imgmenu);
    imgmenu = NULL;
    return 0;
}
Imagen

Responder