[C con Clase] Duda insignificante pero que me trae de cabeza...

Borja Ilundain borjailundain en gmail.com
Mar Mayo 21 10:35:27 CEST 2013


He conseguido que funcione correctamente añadiendo la línea loaded=NULL
tras usar el operador delete en el método. Pensaba que una vez liberada la
memoria dinámica, el puntero quedaba automáticamente asignado a un valor de
NULL, pero ya veo que esto no es así, sino que por lo visto se queda
apuntando a la misma dirección de memoria, aunque ésta sea ahora inválida.
Como bien dices, emplear un if antes del delete no es necesario, y en
cierto modo es incluso redundante, por lo que he leído.
Gracias por la ayuda.


El 17 de mayo de 2013 18:10, Salvador Pozo <salvador en conclase.net> escribió:

> Hola:
>
> Creo que el principal problema es que el objeto "loaded" puede ser
> destruido desde dos sitios dentro de la clase Language, y eso siempre puede
> producir errores.
>
> Creo que lo lógico es, como bien dices, eliminar la línea "delete" en la
> función loadtomem.
>
> En cualquier caso puedes hacer que el delete del destructor sea
> condicional, y que se ejecute sólo si el puntero "loaded" es válido.
>
> Pare eso, después de destruir el objeto dentro de loadtomem, asigna 0 a
> loaded, y en el destructor de LanguajeFile añade un if:
>
> if(loaded) delete loaded;
>
> Aunque esto es opcional, ya que usar el operador delete sobre un puntero
> nulo no produce ningún efecto.
>
> Hasta pronto.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130521/4823e2f3/attachment-0001.html>


Más información sobre la lista de distribución Cconclase