ShowDialog导致堆错误

ShowDialog causes heap error

本文关键字:错误 ShowDialog      更新时间:2023-10-16

我有一个COM服务器(out-of-process),我在其中调用一个FolderBrowserDialog (c++, WindowsForms)的ShowDialog()。当我想要停止COM服务器时,它崩溃了,说有一个堆错误。如果我只是创建FolderBRowserDialog而不调用ShowDialog,错误不会发生…在做研究时,我读到一些关于必须手动处理的内容,但是不能调用处理方法。使用删除也不能解决我的问题。什么好主意吗?下面是代码片段:

...
FolderBrowserDialog^ fbd = gcnew FolderBrowserDialog(); 
fbd->Description = "MAS Open dialog";
fbd->RootFolder = Environment::SpecialFolder::MyComputer;
fbd->SelectedPath = Str;
...
res = fbd->ShowDialog(gcnew WindowWrapper(hwnd));
...

我刚刚遇到了同样的问题,你必须调用

delete fbd;
在<<p> strong> ShowDialog 。