5

マネージコードでメモリを割り当てるには、次を使用します。

IntPtr [] params_list_n = new IntPtr [5];

しかし、管理されていないメモリの場合、私は使用Marshal.AllocHGlobal します。この場合、アレイにメモリを割り当てる方法がわかりません。

Marshal.GetNativeVariantForObject (o, params_list_n[i]); 理想的には、配列の各要素に対して関数呼び出しを使用したいと思います。

4

2 に答える 2

7

Marshal.AllocHGlobalを使用したアンマネージメモリの作成は簡単です。

IntPtr pointer = Marshal.AllocHGlobal(1024);

スペースの量を計算する必要がある場合は、Marshal.SizeOfを使用できます。

int size = Marshal.SizeOf(typeof(IntPtr));
IntPtr pointer = Marshal.AllocHGlobal(size);

unsafe codeこれを実行するには、プロジェクトで有効にする必要もあります。

  1. プロジェクトを右クリックして、を選択しますProperties
  2. タブを開きBuildます。
  3. を選択しAllow unsafe codeます。
于 2013-03-24T22:39:48.383 に答える
3

配列は要素へのポインタになります。同じように使用します。

IntPtr results = Marshal.AllocHGlobal(5 * IntPtr.Size);
于 2013-03-24T22:39:26.290 に答える