C/Visual C - Misterios de delete

 
Vista:

Misterios de delete

Publicado por Arise (37 intervenciones) el 06/05/2003 21:40:25
Mi pregunta es corta pero espero que facil. El caso es que tengo un puntero que apunta a una objeto reservado con un new:
CObjeto* pObjeto = new (CObjeto);
A posteriori, con un delete lo elimino:
delete [] pObjeto;
El caso es que no se si realmente libera la memoria porque el puntero no tiene un valor null despues del delete. El puntero sigue apuntando a una direccion de memoria. Me gustaria que alguien me lo aclarase. Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Misterios de delete

Publicado por Xx Argentno Sexual xX (69 intervenciones) el 06/05/2003 23:14:19
Lo q t pasa es que tenes q implementarlo tambien en el destructor de la clase porq si no, te queda basura en memoria...
Christian
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Misterios de delete

Publicado por chuidiang (677 intervenciones) el 07/05/2003 10:23:38
Cuando haces delete, el puntero no queda apuntando a null. La memoria del objeto se libera, pero el puntero no cambia. Como consejo para evitar problemas, ponlo a null después de liberar

delete puntero;
puntero = NULL;

Si el objeto reserva memoria internamente (con otros new), efectivamente debes hacer un destructor de ese objeto que libere la memoria que ha reservado. Si no, aunque el objeto en si se libere, no se liberará la memoria de los new que él ha hecho.

Otro detalle más. Si haces new a secas, usa delete. Si haces new [ ] (de un array), usa delete [ ].

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar