I was reading the following MSKB example and they perform a delete on a managed object.
I was under the impression you should never delete a garbaged collected object rather you must leave that to garbage collector.
What have I missed?
Method 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;
delete
in C++/CLI merely calls theDispose
method on a managed object, if it implements theSystem::IDisposable
interface – if it doesn't, it's effectively a noop. In fact, if you try to call theDispose
method on a managed object yourself, you'll get a compiler error –delete
is the enforced idiom for disposing an object.To be clear, it has nothing to do with memory management, noting of course that most finalizable objects will get GCed sooner if they're disposed.