Igual no me he explicado del todo bien, voy a explicar el problema que tengo paso a paso a ver si así queda más claro:
Tengo una clase con un doble puntero "mat" en la parte privada para crear una matriz de forma dinámica y un método CrearMatriz en la parte pública donde voy a reservar memoria para esta matriz y si hay memoria suficiente, la relleno de datos.
Llamo al método CrearMatriz, primero indico el número de filas y de columnas que quiero, reservo la memoria de forma dinámica y si hay memoria suficiente, la relleno.
Después, vuelvo a llamar al método CrearMatriz, indico el número de filas y columnas que quiero y mediante un doble puntero auxiliar "matAux" reservo la memoria de forma dinámica, si hay suficiente memoria, lo que hago es liberar la memoria que había reservado anteriormente con "mat" y acto seguido hago que "mat" apunte a la misma dirección de memoria que "matAux", y si NO hay memoria suficiente, al haber usado un puntero auxiliar, mi matriz creada anteriormente con "mat" sigue intacta.
Pues bien, aquí vienen las dudas que tengo:
Si en la segunda vez que llamo al método CrearMatriz, hago mat = matAux, estoy indicando bien que "mat" apunte a "matAux"?
Y después de haber hecho mat = matAux, si ahora quiero que solo "mat" apunte a esa dirección de memoria y "matAux" ya no lo haga, que debo hacer, libero la memoria que había reservado con matAux (con delete o free)? (así creo que me estaría cargando la matriz)
O por el contrario, ya no libero ninguna memoria porque cuando salga del método CrearMatriz la variable "matAux" se destruye automáticamente al estar fuera del ámbito en el que fue declarada?
Esas eran mis preguntas concretas. Gracias.