Gestion de memoria con string

Hola, tengo un problema al tratar de gestionar correctamente la memoria de un pequeño programa.
Dentro de la clase tengo dos atributos pertenecientes a la clase string, que reservan bastante memoria, para tratar de liberarla he probado a llamar a su destructor desde el propio destructor de la clase que cree, para ello uso: NombreInstancia.~string(); pero esto no tiene ningún efecto aparente en la memoria.
¿Cómo puedo liberarla?, si puede ser sin tener que cambiar las cadenas a char*, gracias.

1 respuesta

Respuesta
1
¿Cómo sabes que no se libera la memoria "de los string"?
Hola, poner el código resulta difícil porque es muy extenso, pero te puedo explicar el problema con más detenimiento.
Tengo redefinidos los metodos new y delete de tal modo que cada vez que se llama a uno de ellos se guarda en un array la posicion de memoria y el tamaño de dicha reserva para asi llevar el control de lo que se reserva y libera.
Al crear una instancia de la clase, como dos de los atributos son de la clase string se llama a sus constructores y en ellos se reserva una cantidad de memoria que no es liberada al ejecutar sus destructores, se que se los destructores se llaman de forma automática, pero no se me ocurre otra cosa, pues eso probé a llamarlos.
Espero que puedas ayudarme, gracias por tu respuesta.
El uso que haces del destructor se puede hacer aunque no es recomendable, al salir del ámbito en que creas la variable se llama automáticamente al destructor.
Sin ver el código en principio no puedo ofrecerte más ayuda.
Bueno, ya encontré la solución, el problema esta en que el destructor de string no es el que libera sino otro método y hay que llamarlo, de todas formas recurrí a las cadenas char*, por otras cuestiones, lo de saber que no se liberaba es por lo que te dije antes, tengo redefinidas las funciones new y delete, y se cuando se ejecutan y que hacen en cada momento, muchas gracias de todas formas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas