Возможно получить IntPtr от интервала [] массив?

Поздравления.

В C#: Если у меня есть интервал [] массив, объявленный как это

int[] array = new array[size];

существует способ получить IntPtr от этого массива?

Вещь состоит в том, что я использую платформу EmguCV, и существует конструктор для создания изображения, которое берет IntPtr к пиксельным данным для создания изображения из массива (интервал []).

Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");

Между прочим, если кто-то мог, сказал мне, как вычислить шаг, который будет большим.

8
задан João Cardoso 10 February 2010 в 16:22
поделиться

2 ответа

Вы должны быть в состоянии сделать это без небезопасного кода, используя GCHandle. Вот пример:

GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
    IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
    if (handle.IsAllocated)
    {
        handle.Free();
    }
}
16
ответ дан 5 December 2019 в 07:35
поделиться

Используйте небезопасный код, как здесь:

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}
6
ответ дан 5 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: