Página 1 de 3
Limpiar imagen de la RAM psp [C]
Publicado: 06 Ene 2011, 19:12
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

Re: Limpiar imagen de la RAM psp [C]
Publicado: 06 Ene 2011, 20:31
por m0skit0
Depende de la librería que estés usando serán unas funciones u otras.
Re: Limpiar imagen de la RAM psp [C]
Publicado: 06 Ene 2011, 20:49
por jdelmejor
m0skit0 escribió:Depende de la librería que estés usando serán unas funciones u otras.
Es la libreria: graphics.h
Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 10:19
por m0skit0
Eso no es una librería, es un fichero de cabecera

¿De dónde has sacado ese
graphics.h?
Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 10:34
por jdelmejor
m0skit0 escribió:Eso no es una librería, es un fichero de cabecera

¿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.
Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 10:40
por m0skit0
Sip esas (las únicas que hay

)
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
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

Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 13:28
por jdelmejor
m0skit0 escribió:Sip esas (las únicas que hay

)
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
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

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.

Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 14:16
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:
Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 14:53
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:
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.
Re: Limpiar imagen de la RAM psp [C]
Publicado: 07 Ene 2011, 14:55
por m0skit0
Nop

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;
}