Stavo leggendo il seguente esempio MSKB e loro eseguono un'eliminazione su un oggetto gestito.Quando dovrebbe essere richiamato su un oggetto assegnato a gcnew?
Ho avuto l'impressione che non dovresti mai eliminare un oggetto raccolto con garmenta piuttosto che devi lasciarlo al garbage collector.
Cosa mi è mancato?
Metodo 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;
Quindi, dopo aver contrassegnato l'oggetto per un GC più immediato, non c'è davvero alcun valido motivo per utilizzare l'eliminazione nell'esempio precedente? – TownCube
@Cube: No, la fine del contratto 'IDisposable' è un ottimo motivo per ** sempre ** usare' delete' ogni volta che hai finito con un oggetto. O meglio ancora, usa la semantica dello stack per RAII simulato in modo da non dover mai usare 'delete', e' Dispose' verrà chiamato automaticamente non appena gli oggetti escono dall'ambito. – ildjarn