Hola, soy bastante nuevo programando en C++ y agradecería que alguien me aclarara ciertas dudas transcendentales en relación a la gestión de memoria. He desarrollado una clase matriz (que maneja grandes dimensiones) para efectuar cálculos matemáticos y tengo varias dudas:
Si en el programa principal hago uso de la clase, por ej:
Código HTML:
Matriz<double> X(50000,2000)
,y una vez que ya no me es útil invoco al destructor:
, obtengo un error, pues al final del programa se invoca, de nuevo, de oficio al destructor. ¿Hay alguna manera de evitar esto? Esto mismo me ocurre con una función no miembro que me almacena los datos de una matriz de 2 dimensiones en otra de 3 (que es otra clase) en la que paso por referencia la matriz 2D e intento destruirla al final, pues ya no me es útil.
Y, ya que pregunto, me gustaría que alguien me aclarara si, en lugar de emplear directamente el objeto matriz, podría emplear un puntero a matriz, que puedo destruir con delete. De ser así, ¿emplearía menos memoria?¿cómo puedo trabajar con el puntero?. Por ejemplo, para la clase matriz tengo el operador () para asignar un valor en la posicición (i,j) :
Código HTML:
T& operator () (int i,int j){return *(v+i+j*iRows);};
donde : T es el Typename del valor a asignar, *v contiene los elementos del objeto matriz (que por eficiencia se almacenan en un vector), i y j son el número de fila i columna objetivos, y iRows el número de filas del objeto.
Muchas gracias