Diferencia de instancia (CLASE oObjeto; y CLASE *oObjeto = new CLASE();)

Iniciado por ahkbar87, 14 Junio 2011, 06:11 AM

0 Miembros y 1 Visitante están viendo este tema.

ahkbar87

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!
         
 

do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

Don Pollo

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.