1

对不起我的英语不好。我想释放 gcroot 对象使用的内存。这是一个返回错误的简单示例。在MSDN上,我发现 Bitmap 对象有一个Dispose()方法。当我尝试将此方法用于 gcroot 对象时,MS VC 2010 会返回此消息。我怎样才能释放这个内存?

picture_box_main_handler.cpp(194): error C2039: Dispose: is not a member of "gcroot"

gcroot<Bitmap^>  new_image = gcnew Bitmap(500,500);
new_image.Dispose();
4

1 回答 1

2

您并没有尝试在“gcroot”本身上调用该方法(因此您不需要 . 语法)。

但是,DisposeforIDisposable在 C++/cli 中是特殊的。您delete为此使用关键字:

所以你可以打电话:

delete new_image; 

这将调用底层的 Dispose Bitmap ^

您可能希望使用auto_handle自动处理处理。看到这个问题:

C++/CLI 资源管理混乱

于 2013-05-17T21:17:09.737 回答