It is possible to get an IntPtr from an int[] array?

前提是你 提交于 2019-12-30 17:35:27

问题


Greetings.

In C#: If I have an int[] array declared like this

int[] array = new array[size];

there is an way to get the IntPtr from this array?

The thing is that I'm using the EmguCV framework, and there is an constructor to create an image which takes an IntPtr to the pixel data, in order to build an image from an array (int[]).

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

By the way if someone could told me how to calculate the stride, that would be great.


回答1:


You should be able to do this without unsafe code using GCHandle. Here is a sample:

GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
    IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
    if (handle.IsAllocated)
    {
        handle.Free();
    }
}



回答2:


Use unsafe code, like this:

unsafe
{
  fixed (int* pArray = array)
  {
    IntPtr intPtr = new IntPtr((void *) pArray);
  }
}


来源:https://stackoverflow.com/questions/2238049/it-is-possible-to-get-an-intptr-from-an-int-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!