从monotouch到Malloc()的最佳方式是什么?

时间:2011-04-04 20:28:10

标签: iphone mono xamarin.ios

我在monotouch中做了一些略低级别的操作 - 如果我在ObjC / xcode中,我会使用malloc来获取Int *。

我目前的方法如下:

  • 将该方法标记为不安全
  • 将/ unsafe标志添加到编译器
  • 分配字节数组
  • 将其安全地分配给IntPtr。

IE:

byte [] byteArray = new byte[1024].
IntPtr byteArrayPtr;
fixed (byte *_bp = byteArray) {
    byteArrayPtr = (IntPtr)_bp;
}

Presto,我有byteArrayPtr附加到1K的内存块,但我不禁想到这可能是一个有点粗暴的方法。是否有更简洁的方法来获得指向“空池o'记忆”的IntPtr

1 个答案:

答案 0 :(得分:5)

您应该使用:

Marshal.AllocHGlobal ()

如果你想要堆内存。

如果你想要堆栈内存,你应该使用stackalloc,但这是仅对当前方法的执行有效的内存。它会在方法终止时自动释放