Estaba leyendo el siguiente ejemplo MSKB y realizan una eliminación en un objeto administrado.¿Cuándo se debe llamar a delete en un objeto asignado gcnew?
Tenía la impresión de que nunca deberías eliminar un objeto recogido como basura sino que debes dejarlo en el recolector de basura.
¿Qué me he perdido?
Método 4
//#include <msclr/marshal.h>
//using namespace msclr::interop;
marshal_context^context = gcnew marshal_context();
const char* str4 = context->marshal_as<const char*>(str);
puts(str4);
delete context;
Entonces, aparte de marcar el objeto para un GC más inmediato, ¿realmente no hay una buena razón para usar eliminar en el ejemplo anterior? – TownCube
@Cube: No, cumplir con su parte del contrato 'IDisposable' es una excelente razón para ** siempre ** usar' borrar' cuando haya terminado con un objeto. O mejor aún, use la semántica de la pila para la RAII simulada para que nunca tenga que usar 'delete', y' Dispose' se invocará automáticamente tan pronto como los objetos salgan del alcance. – ildjarn