.net - 快速释放本地对象

标签 .net c++-cli

如果我有多个 native 类型变量,例如:

EmpNameC =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox38->Text).ToPointer();
PyrllC =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox31->Text).ToPointer();
DtbrthC=( wchar_t *)Marshal::StringToHGlobalUni(this->textBox37->Text).ToPointer();
PlcBrthC=( wchar_t *)Marshal::StringToHGlobalUni(this->textBox36->Text).ToPointer();
CIDC    =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox35->Text).ToPointer();
ContNoC=( wchar_t *)Marshal::StringToHGlobalUni(this->textBox34->Text).ToPointer();
JndtC   =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox33->Text).ToPointer();
PostnC  =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox32->Text).ToPointer();
DeptC   =( wchar_t *)Marshal::StringToHGlobalUni(this->comboBox4->Text).ToPointer();
AnnLvC  =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox9->Text).ToPointer();
EmrgLvC=( wchar_t *)Marshal::StringToHGlobalUni(this->textBox30->Text).ToPointer();
IrrC=( wchar_t *)Marshal::StringToHGlobalUni(this->comboBox1->SelectedItem->ToString()).ToPointer();
HmTwnC  =( wchar_t *)Marshal::StringToHGlobalUni(this->textBox25->Text).ToPointer();

我必须像这样释放所有的人:

Marshal::FreeHGlobal((IntPtr)EmpNameC);      
Marshal::FreeHGlobal((IntPtr)DtbrthC);
Marshal::FreeHGlobal((IntPtr)PlcBrthC);
Marshal::FreeHGlobal((IntPtr)CIDC);
Marshal::FreeHGlobal((IntPtr)ContNoC);
Marshal::FreeHGlobal((IntPtr)JndtC);
Marshal::FreeHGlobal((IntPtr)PostnC);
Marshal::FreeHGlobal((IntPtr)DeptC);
Marshal::FreeHGlobal((IntPtr)AnnLvC);
Marshal::FreeHGlobal((IntPtr)EmrgLvC);
Marshal::FreeHGlobal((IntPtr)IrrC);
Marshal::FreeHGlobal((IntPtr)HmTwnC);

有没有更短的方法可以用来释放所有 native 对象,而不是对每个对象执行一次?

最佳答案

您可以使用包含队列的专用结构来管理它。

每次分配一个本地对象时,您将其插入队列,最后循环释放它们。

关于.net - 快速释放本地对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13794781/

相关文章:

c# - .NET GZipStream 解压缩生成空流

c# - 如何使用 C# 从 oracle 数据库中填充数据集

c# - 锁定关键字调用 Monitor.Enter(Object) 或 Enter(Object, Boolean)?

c++ - 为使用 boost 的预开发库构建 C++ 包装器时 Unresolved external 问题

c++ - .net c++/cli 获取指针的内容

c++11 - 我需要做什么才能同时拥有 C++/CLI 和非托管 C++11 枚举类?

c# - Math.Net 解值为 0 的线性方程组

c# - 从 C# 调用 Python

string - 将 String^ 转换为 wstring C++

c++ - 混合托管/非托管 C++?