[C con Clase] Otra duda

Miguel Alejandro Jimenez Ramirez cerberbero en gmail.com
Jue Mar 13 17:04:46 CET 2014


A proposito de este problema utilice esta funcion que encontre para liberar
y para utilizar el destructor:
 while (!list.empty()){
delete list.back();
list.pop_back;
}
Y funciona muy bien ahora el problema que tengo es que llama a ciertos
destructores desde el ultimo hasta el primero , es decir de la forma
contraria a como lo estoy buscando , pero ese problema ya lo resolvere ,
simplemente queria mostrarte que encontre este metodo que funciona muy bien
, y si es cierto que si hay un destructor es hay donde se liberan los
accesos a memoria.



2014-03-13 16:59 GMT+01:00 Salvador Pozo <salvador en conclase.net>:

> El pasado 2014-03-13 11:56:19, Miguel Alejandro jimenez escribió:
>
> MAj> Volviendo a esta funcion:
> MAj>  void Bibliotheque::stocker(Oeuvre & test, int n=1 )  {
> MAj>        while (n >=1){
> MAj>       list.push_back(new Exemplaire(test));
> MAj>       cout<<"PRUEBA"<<endl;
> MAj>        n--;
> MAj>       }
>
> Bien, ahora entiendo que lo que quieres liberar es el vector "list".
>
> Pues tengo una buena noticia: no es necesario.
>
> list es de tipo vector, y vector es una plantilla de clase que tiene su
> propio destuctor, de modo que cuando, en este caso, el objeto de la clase
> "Bibliotheque" sea destruido, el destructor de "list" será invocado
> automáticamente.
>
> MAj> La verdad no se como liberar estos espacios de memoria , es verdad
> que lo
> MAj> ideal seria liberarlos en la misma funcion stocker(); , pero no puedo
> , ya
> MAj> que despues voy a utilizar el vector en otras funciones ,
>
> Bueno, no podrías en ningún caso, ya que la idea es iniciar o añadir
> elementos al vector. No tendría utilidad añadirlos e inmediatamente después
> eliminarlos.
>
> MAj> Entoces en la clase Bibliotheque , cree un destructor que seria algo
> como
> MAj> esto:
> MAj> Bibliotheque::~Bibliotheque(){
> MAj>        for(unsigned int p=0;p<list.size();p++)
> MAj>         list.push_back(delete );
> MAj>                        }
>
> Si quieres invocar el destructor para cada elemento de "list" dentro del
> destructor de "Bibliotheque", lo que no es necesario, es más simple que
> eso. No necesitas liberar cada elemento del vector, puedes eliminar el
> vector completo:
>
> Bibliotheque::~Bibliotheque(){
>        list.clear();
> }
>
> Sin embargo, es innecesario, ya que el vector "list" será destruido
> automáticamente al destruir "Bibliotheque".
>
> Hasta pronto.
>
> --
> Salvador Pozo (Administrador)
> mailto:salvador en conclase.net
> Blog con Clase: http://blogconclase.wordpress.com
> Con Clase: http://conclase.net
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
MIGUEL ALEJANDRO JIMENEZ R.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140313/e846254b/attachment.html>


Más información sobre la lista de distribución Cconclase