8
私は以下のMSKBの例を読んでいて、管理対象オブジェクトに対して削除を実行します。gcnewに割り当てられたオブジェクトでは、いつ削除する必要がありますか?
ガベージコレクションされたオブジェクトを削除しないでください。ガベージコレクタに残す必要があります。
私は何が欠けていますか? C++/CLIで
方法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のためにオブジェクトをマークしても、上記の例でdeleteを使用する理由はありませんか? – TownCube
@Cube:いいえ、 'IDisposable'契約の終わりを徹底的に守ることは、いつでも**オブジェクトを終えたときに' delete'を使う素晴らしい理由です。または、より良いのは、シミュレートされたRAIIのスタックセマンティクスを使用して、 'delete'を使用する必要がないようにします。オブジェクトがスコープから外れるとすぐに' Dispose'が自動的に呼び出されます。 – ildjarn