Por favor, considere el siguiente código:¿Qué está sucediendo durante la declaración `delete this;`?
class foo
{
public:
foo(){}
~foo(){}
void done() { delete this;}
private:
int x;
};
Lo que está pasando (y es válido?) En las dos opciones siguientes:
la opción 1:
void main()
{
foo* a = new foo();
a->done();
delete a;
}
opción 2:
void main()
{
foo a;
a.done();
}
Será la segunda declaración delete a;
en opt ion 1 causará una excepción o corrupción de montón?
¿La opción 2 causará una excepción o corrupción de montón?
¿Olvidó por error los corchetes de apertura de la clase o es exactamente el código de la copia pegada? – Neophile
@Nerds: un error tipográfico - corregido ... – NirMH
Interesante. Supongo que el primero causaría una corrupeción segfault o heap, y el segundo hará lo que sea borrar un puntero a la pila. – cha0site