duplicados posibles:
C++: Delete this?
Object-Oriented Suicide or delete this; ¿Podría un objeto desasignar su memoria?
estoy aprendiendo C++ mediante la lectura del libro muy bueno C++ Primer y estoy aprendiendo C++ memoria desasigna por la palabra clave delete
como C hace con free
. Java y Pascal no tienen este mecanismo para liberar explícitamente la memoria. Podría dar lugar a errores en los programas si se ejecutan durante mucho tiempo y se destruyen las variables que se necesitan, por lo que no se debe trivializar.
En resumen, me pregunto si es legal o conveniente, por ejemplo, en C++ para una variable hacer this.delete()
y eliminar en sí. Sobre todo escuchamos sobre la liberación de punteros en C y C++ y esto se hace con las nuevas palabras clave free
y delete
. Pascal también tiene punteros pero Java no. Por lo tanto, en Java no debería ser posible porque no se eliminan explícitamente los objetos, C no tiene objetos, por lo que struct
no pudo free
la memoria que se asignó, incluso si era técnicamente posible, ya que C no tiene objetos y Pascal tampoco .
Supongo que deja C++ para mi pregunta si es legal que un objeto se elimine con algo como this.delete()
?
Doin g así que es posible - 'delete this;' es una sintaxis perfectamente válida en C++ y debe compilar y ejecutar "correctamente". Sin embargo, asume que '* this' está asignado en el montón, que no es necesariamente así. Además, corre el riesgo de dañar aún más la memoria porque una vez liberado, el espacio anteriormente ocupado por '* this' puede ser reutilizado por asignaciones de memoria posteriores. Mala idea. ¡Huir! ¡Huir! –