8
我正在閱讀以下MSKB示例,它們在受管理的對象上執行刪除操作。什麼時候應該刪除被調用的gcnew分配的對象?
我的印象是,你永遠不應該刪除垃圾收集對象,而是你必須把它留給垃圾收集器。
我錯過了什麼?
方法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;
因此,其他標記爲更直接GC的對象,在上面的例子中沒有什麼好的理由使用刪除? – TownCube
@Cube:不,實現你的'IDisposable'合同的結尾是一個很好的理由**總是**在你完成一個對象時使用'delete'。或者更好的是,爲模擬RAII使用堆棧語義,所以你不必使用'delete',只要對象超出範圍,就會自動調用Dispose。 – ildjarn