0

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

4

2 回答 2

7

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

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

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

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

在您必须调用FreeHGlobal后释放该内存

 Marshal.FreeHGlobal((IntPtr)vertices);

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

AllocCoTaskMem和相关的 FreeCoTaskMem

于 2012-08-01T13:39:19.467 回答
-1

尝试使用此代码以释放

Marshal.FreeHGlobal((IntPtr)vertices);
于 2012-08-01T13:33:49.993 回答