Tenes que pasar el puntero como referencia o doble puntero. Mejor explicado aca:
http://conclase.net/c/curso/cap15
Ejemplo de como lo estas haciendo y como podria funcionar, en error l es una variable local pasada por valor:
Por cierto tu codigo no compila ni a palos, no podes llamar new a una funcion en C++ al ser una palabra clave (y no podes usar class en C ...).
http://conclase.net/c/curso/cap15
Ejemplo de como lo estas haciendo y como podria funcionar, en error l es una variable local pasada por valor:
Código (c++) [Seleccionar]
#include <cstdio>
void error(int *l)
{
l = new int;
}
void reserva(int **l)
{
*l = new int;
}
void main ()
{
int *m1 = nullptr;
int *m2 = nullptr;
error(m1);
reserva(&m2);
printf("%p %p\r\n", m1, m2);
}
Por cierto tu codigo no compila ni a palos, no podes llamar new a una funcion en C++ al ser una palabra clave (y no podes usar class en C ...).