Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/07/2014, 03:29
SARGE553413
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 2 meses
Puntos: 3
Respuesta: Punteros nativos en clases administradas (c++/cli)

Tras investigar, me autocontesto:

En C++/CLI, aparted e los clásicos dstructores de C++ hay "Finalizadores", que se designan mediante el símnolo '!', por ej. para una clase 'A' su finalizador sería !A().

En finalizador es el que debe borrar todos los recursos no administrados (punteros nativos).

El destructor debe borrar TODOS los recursos, administrados o no, y para no recplicar código desde el destructor llamamos al finalizador.

Y eso es todo, adjunto un par de links que pueden ayudar:
http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx
http://social.msdn.microsoft.com/For...orum=vcgeneral

Saludos.

PD. respecto a las preguntas de arriba:
1 - El garbage collector de .NET NO borra los recursos no administrados (native pointers) ( de hecho creo que están en heaps distintos)
2 - En el clásico destructor, SI hay que borrar los recursos administrados (managed pointers).
3 - He probado a llamar, al finalizar el main, al destructor de mi clase A ( ~A() ), y no ha habido error, de lo deduzco que, al finalizar el main, los destructores de las clases administradas NO son llamados. (Recordemos que en C++, si llamamos al destructor de clase al finalizar el main, esto causa un error por hacer delete 2 veces sobre el mismo objeto).