开发者

When should delete be called on a gcnew allocated object?

开发者 https://www.devze.com 2023-03-29 02:33 出处:网络
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 ga

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 the Dispose method on a managed object, if it implements the System::IDisposable interface – if it doesn't, it's effectively a noop. In fact, if you try to call the Dispose 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消