31/03/2010, 11:08
|
| | Fecha de Ingreso: junio-2008 Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses Puntos: 61 | |
Respuesta: Duda con punteros Si tu arreglo mantiene punteros a Investigadores, el metodo deberia recibir eso, punteros. Si no recibe punteros, entonces recibira una copia de los objetos que te pasan, tal como estas declarando el metodo, y al asignarle a tu arreglo mediante
lArrNuevo[s] = &i;
estas guardando la direccion de memoria de una copia, copia que morira al salir del metodo.
En este caso, lo que deberias hacer es pedir memoria para un investigador, copiar los datos de lo que te pasan, y olvidarte de la copia. Pero esto parece mas trabajo que simplemente guardar punteros a objetos que fueron creados en otro lugar.
Esta el problema de la propiedad. Quien es el dueño de la memoria que ahora guardas en esos punteros? Si es el usuario externo de la clase, el se tiene que preocupar de liberar esa memoria, y si es esta coleccion, ella tiene que liberar la memoria en el destructor.
Por otro lado, la memoria que antes fue pedida para el arreglo lArr, no la estas liberando y lo tienes que hacer antes de la asignacion
lArr = lArrNuevo;
o si no, habras perdido la direccion que permitira tal liberacion. |