Каков наилучший способ Malloc () от monotouch? - PullRequest
2 голосов
/ 05 апреля 2011

Я делаю несколько более низкоуровневые манипуляции в monotouch - такие вещи, что если бы я был в ObjC / xcode, я бы использовал malloc для получения Int *.

Моя текущая методология выглядит следующим образом:

  • Пометить метод как небезопасный
  • добавить флаг / unsafe в компилятор
  • Выделить байтовый массив
  • небезопасно назначить его IntPtr.

IE:

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

Presto, у меня есть byteArrayPtr, который привязан к фрагменту памяти в 1 КБ, но я не могу не думать, что это может быть немного жестким подходом. Есть ли более чистый способ получить IntPtr, который указывает на «пустой пул памяти»?

1 Ответ

5 голосов
/ 05 апреля 2011

Вы должны использовать:

Marshal.AllocHGlobal ()

если вам нужна куча памяти.

Если вам нужна стековая память, вы должны использовать stackalloc , но это память, которая действительна только для выполнения текущего метода. Он автоматически освобождается, когда метод завершается

...