elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  duda sobre operador new
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sobre operador new  (Leído 2,262 veces)
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
duda sobre operador new
« en: 19 Mayo 2011, 06:17 am »

hola viendo un codigo de por ahi me re sulto llamativo el hecho de que se hace esto:

(teniendo una clase definida : tipo)
Código
  1. class coso
  2. {
  3.  
  4.  void funasd()
  5. {
  6.  
  7. tipo *untipo;
  8. untipo = new tipo;
  9.  
  10.        untipo.caminaunrato();
  11.  
  12.  }
  13. };
  14.  
  15.  

 Bien practicamente es eso, el tema es que 'funasd()' es llamada mas de una ves. Y lo segundo es que la funcion untipo.caminaunrato() tira desp de 10 seg un mensaje en pantalla el cual avisa q el tipo deja de caminar.

 Lo q me llama la atencion es que al llamar varias veces a 'funasd()'
 los otros 'tipos que caminan' no se terminan/borran, siguen funcionando y tiran el mensaje tranquilamente.

 Esto es porque al ser un puntero y usar el operador new no rescribe la memoria ya usada y crea un objeto nuevo en otro espacio?

 En este caso q pasa con esa memoria que fue declarada y se perdio al asignar una nuava direccion al puntero 'untipo'?

 Espero haberme explicado bien...
  


« Última modificación: 19 Mayo 2011, 06:34 am por <[(x)]> » En línea

<[(x)]>
willyhunting

Desconectado Desconectado

Mensajes: 72



Ver Perfil WWW
Re: duda sobre operador new
« Respuesta #1 en: 19 Mayo 2011, 10:22 am »

En efecto, al reservar memoria dinámicamente utilizando el operador new, ésta no es liberada automáticamente al salir del ámbito de la función.; por lo que al no liberarse explícitamente (usando delete), cada vez que se llema a la función, se reserva más memoria, y tienes como resultado una bonita fuga de memoria que puede hacer que tu ordenador pete o vaya a pedales.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con sobrecarga de operador ( )
Programación C/C++
Akai 6 4,662 Último mensaje 16 Noviembre 2010, 14:53 pm
por Akai
Sobre carga de operador [Visual Studio 2010]
Programación C/C++
Namida 6 5,004 Último mensaje 17 Diciembre 2010, 09:40 am
por Namida
(Solucionado) [Ruby] Duda sobre FOR con operador de rango
Scripting
Eleкtro 3 3,538 Último mensaje 24 Febrero 2012, 13:42 pm
por Eleкtro
Duda con Operador de Bit en C# (codificación en Base64)
Programación General
Fireball-CH 0 2,695 Último mensaje 20 Septiembre 2012, 05:34 am
por Fireball-CH
[Solucionado] Duda en operador ternario ?:
Programación C/C++
Mario Olivera 6 3,958 Último mensaje 21 Julio 2014, 17:17 pm
por Mario Olivera
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines