在C#中删除对象

时间:2012-08-01 13:31:39

标签: c# .net

在dotNET中我们可以编写非托管代码,在哪里可以动态分配内存(通过关键字:stackalloc,new),使用指针等。
可以释放内存(例如通过C ++中的删除)?

2 个答案:

答案 0 :(得分:7)

这取决于如何您分配内存。

例如,如果使用AllocHGlobal分配内存:

double* vertices = (double*)Marshal.AllocHGlobal(
                          3 * count *  Marshal.SizeOf(typeof(double)));

您可以分配给定大小的双精度数组。

在必须致电FreeHGlobal

后释放内存
 Marshal.FreeHGlobal((IntPtr)vertices);

还有其他用于分配COM任务内存的功能,例如

AllocCoTaskMem和亲戚FreeCoTaskMem

答案 1 :(得分:-1)

尝试使用此代码以免费

Marshal.FreeHGlobal((IntPtr)vertices);