hola<br>el sistema operativo automaticamente loibera toda la memoria que use un proceso.<br>excepto la memoria compartida.<br>busca <a href="http://valgrind.org">valgrind.org</a> no se si esta para windows pero de ultima pones valgrind windows y algo va a aparecer.<br>

<br>David<br><br><div class="gmail_quote">El 31 de julio de 2009 09:32, David Inocente Romero Escalona <span dir="ltr"><<a href="mailto:di.romero@hotmail.es">di.romero@hotmail.es</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">





<div>
Una última duda sobre el tema de la reserva dinámica de memoria.<br>
 <br>
¿y si el programa termina anormalmente (por ejemplo, porque se aborta llamando a la función "abort()" ó porque recibe una señal de aborto y no la maneja)? ¿se sigue ejecutando el código objeto que añade el compilador de C++ para destruir todos los objetos que se hayan creado y sigan vivos?<br>


 <br>
Por cierto, ¿conoces algún programa/herramienta para win32 que permita saber si un cierto proceso tiene "fugas de memoria" (memory leaks)?<br>
 <br>
Saludos.<br>
<br> <br>> Date: Thu, 30 Jul 2009 16:46:40 -0400<div class="im"><br>> From: <a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a><br>> To: <a href="mailto:cconclase@listas.conclase.net" target="_blank">cconclase@listas.conclase.net</a><br>

> Subject: Re: [C con Clase] [C con clase] ¿exit() libera memoria dinámica?<br>> <br></div><div><div></div><div class="h5">> Hola David,<br>> <br>> David Inocente Romero Escalona wrote:<br>> > En primer lugar, muchas gracias por tu completa respuesta, Steven.<br>

> > Creo que ya sé por qué he vuelto a esta lista de correo...<br>> > <br>> <br>> De nada; para eso estamos :)<br>> <br>> > En mi aplicación, las reservas de memoria de forma dinámica se <br>> > realizan en una sola clase C++ (que modeliza una lista de números<br>

> > reales dinámica, es decir, que puede crecer en tiempo de ejecución).<br>> > Esta clase define adecuadamente su método destructor para que libere<br>> > toda la memoria que haya podido reservar dinámicamente. Igualmente,<br>

> > todos los métodos de la clase tienen especial cuidado en no dejar<br>> > zonas de memoria reservadas dinámicamente sin liberar.<br>> > <br>> > En ningún otro punto de la aplicación se realiza reserva dinámica de<br>

> > memoria alguna. Todos mis objetos 3D (que son objetos de clases C++)<br>> > que necesitan usar una lista dinámica de números reales tienen un<br>> > objeto miembro de la clase mencionada que maneja la memoria dinámica.<br>

> > <br>> > Además, todos los objetos que creo los creo usando memoria estática<br>> > (es decir, sin reservar memoria en tiempo de ejecución); de esta<br>> > forma:<br>> > <br>> > Objeto3D objeto3D(<parámetros necesarios>);<br>

> > <br>> > Por lo tanto, según lo último que comentas, no debo destruir objeto <br>> > alguno (aunque ese objeto contenga un objeto que a su vez ha<br>> > reservado memoria dinámicamente). Al terminar el proceso, se<br>

> > destruirán todos los objetos creados (por lo que se llamará a sus<br>> > destructores y, éstos, acabarán liberando la memoria reservada en<br>> > tiempo de ejecución).<br>> > <br>> > ¿estoy en lo correcto?<br>

> > <br>> <br>> Perfecto. Si los destructores gestionan la liberación de la memoria <br>> dinámica, entonces el "exterior" no tiene que preocuparse. Al fin y al <br>> cabo, se trata de una gestión interna del objeto, el cual debe hacer <br>

> autónomamente.<br>> <br>> > Por cierto, ¿quién envía el mensaje destructor a todos los objetos<br>> > que se hayan creado al terminar el proceso? ¿el compilador de C++<br>> > introduce código objeto que se encarga de realizarlo?<br>

> > <br>> <br>> Sí. El compilador es quien se encarga, ya que este sistema está <br>> establecido por el lenguaje, C++.<br>> <br>> <br>> Para zanjar este tema, se me olvidó comentar que existe la <br>

> clase-plantilla 'auto_ptr' que podría servir para lo que mencionas. Esta <br>> plantilla representa el concepto de un "puntero inteligente". <br>> Básicamente, se comporta como un puntero, pero generará una clase la <br>

> cual destruirá la memoria dicho puntero apunta, valga la redundancia. <br>> Por ejemplo,<br>> <br>> int main()<br>> {<br>> auto_ptr< Info > pLista( new Info );<br>> ...<br>> return 0;<br>> }<br>

> <br>> La clase 'auto_ptr<Info>' se encargará de destruir la memoria creada <br>> dinámicamente al terminar el ámbito.<br>> <br>> Sé que no necesitas esto, pero quería completa lo que dije en mi <br>

> anterior mensaje.<br>> <br>> <br>> Espero haber aclarado las dudas.<br>> <br>> Steven<br>> <br>> <br>> _______________________________________________<br>> Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>

> <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>> Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>

<br></div></div><hr>Comparte tus fotos con tus amigos. Más fácil con <a href="http://download.live.com" target="_blank">Windows Live</a></div>
<br>_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br></blockquote></div><br><br clear="all"><br>-- <br> (\__/) <br>(='.'=)This is Bunny. Copy and paste bunny into your <br>

(")_(")signature to help him gain world domination. <br><br>