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

Sea*_*ean 2 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;
}
Run Code Online (Sandbox Code Playgroud)

Presto,我有byteArrayPtr一个1K的内存,但我不禁想到这可能是一个有点粗暴的方法.是否有更简洁的方法来IntPtr指出"空池o'记忆"?

Geo*_*ton 5

你应该使用:

Marshal.AllocHGlobal ()
Run Code Online (Sandbox Code Playgroud)

如果你想要堆内存.

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