Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ahkbar87 en 14 Junio 2011, 06:11 am



Título: Diferencia de instancia (CLASE oObjeto; y CLASE *oObjeto = new CLASE();)
Publicado por: ahkbar87 en 14 Junio 2011, 06:11 am
Hola,
         Bueno la duda es esa, cual es la diferencia de crear un objeto utilizando:

CLASE oObjeto;
oObjeto.metodo();

Con esta otra:

CLASE *oObjeto = new CLASE();
oObjeto->metodo();

Si por favor me pudieran explicar tal diferencia a nivel de memoria, de antemano gracias!!!, con eso me refiero a HEAP, STACK, gracias!
         
 


Título: Re: Diferencia de instancia (CLASE oObjeto; y CLASE *oObjeto = new CLASE();)
Publicado por: do-while en 14 Junio 2011, 14:19 pm
¡Buenas!

La diferencia es que cuando estas creando un objeto de la clase en tiempo de compilacion, en el marco de llamada a la funcion que contiene el objeto, estas tomando memoria del stack del programa para almacenarlo (o para almacenar su direccion). Si el objeto lo creas en tiempo de ejecucion, la memoria la tomas del heap.

Supongo que alguien te podra dar informacion mas concreta, pero la idea es esa.

¡Saludos!


Título: Re: Diferencia de instancia (CLASE oObjeto; y CLASE *oObjeto = new CLASE();)
Publicado por: Don Pollo en 14 Junio 2011, 23:17 pm
Si lo creas como puntero, eres tú el que le asigna la memoria y, por ende, eres tú el que debes eliminarlo con un "delete" cuando ya no te haga falta. Si no lo creas como puntero, se crea y se destruye automáticamente.