Tow*_*ube 9 c++-cli visual-studio-2008
我正在阅读以下MSKB示例,他们在托管对象上执行删除操作.
我的印象是你永远不应该删除一个带有垃圾的收集对象,而你必须把它留给垃圾收集器.
我错过了什么?
方法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;
Run Code Online (Sandbox Code Playgroud)
ild*_*arn 13
delete
在C++/CLI中只调用Dispose
托管对象上的方法,如果它实现了System::IDisposable
接口 - 如果它没有,它实际上是一个noop.实际上,如果您尝试Dispose
自己在托管对象上调用该方法,则会出现编译器错误 - delete
是处理对象的强制惯用法.
要清楚,它与内存管理无关,当然注意到大多数可终结的对象如果被处理掉的话会更快得到GC.