Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: HaCkZJuaNN on April 02, 2009, 02:18:05 PM

Title: Saber si un puntero apunta a algún sitio.
Post by: HaCkZJuaNN on April 02, 2009, 02:18:05 PM
Básicamente, necesito saber algún comando o algún modo de saber si un puntero ha sido inicializado para poder usar free(puntero). Pudiera ser que haya creado la variable del puntero pero aún no le haya puesto ninguna dirección de memoria a la que apuntar, por lo que si hago free puedo borrar dios sabe qué. Gracias.
Title: Re: Saber si un puntero apunta a algún sitio.
Post by: SplinterGU on April 02, 2009, 02:46:51 PM
Los punteros los tenes que inicializar vos, con NULL o 0.
Si son punteros declarados como tales en alguna seccion global, private, public, etc... no hace falta que los inicialices, se inicializan solo (eso solo en bennu/fenix, en otros lenguajes la cosa es diferente).
Ahora si es un array de punteros o un puntero dentro de una estructura que creaste con malloc, entonces tenes que inicializarlo vos.

Y cuando haces free, tenes que hacer:

if (puntero) free(puntero); puntero = NULL; end

no olvides poner el puntero a NULL, por si luego entras en otra funcion (o en la misma) que hace un free de ese elemento, no lo haga cuando este ya esta liberado.

otra cuestion, cuidado con usar punteros que no sean globales desde una funcion, llamar a otra que lo libere y asignarle NULL dentro de esta ultima, porque la primera seguira teniendo el valor no nulo... a menos que pases puntero de puntero.
Title: Re: Saber si un puntero apunta a algún sitio.
Post by: HaCkZJuaNN on April 02, 2009, 02:55:55 PM
Entonces, cuando hago if(puntero), eso es cierto cuando el puntero no es null o cuando no es 0, o es lo mismo?
Title: Re: Saber si un puntero apunta a algún sitio.
Post by: SplinterGU on April 02, 2009, 02:58:45 PM
es lo mismo... NULL = 0