0

dotNET では、アンマネージ コードを記述できます。メモリを動的に割り当てたり (キーワード: stackalloc、new)、ポインターを使用したりできます。
メモリを解放することは可能ですか (たとえば、C++ の delete などによって)?

4

2 に答える 2

7

メモリの割り当て方法によって異なります。

たとえば、AllocHGlobalでメモリを割り当てる場合:

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

指定されたサイズの 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 に答える