É possível obter um IntPtr de um int array []?
Pergunta
Saudações.
Em C #: Se eu tiver um int [] matriz declarada como este
int[] array = new array[size];
existe uma maneira de obter o IntPtr a partir desta matriz?
A coisa é que eu estou usando o framework EmguCV, e há um construtor para criar uma imagem que tem um IntPtr para os dados de pixel, a fim de construir uma imagem de uma matriz (int []).
Image<Gray,Int32> result = new Image<Gray,int>(bitmap.Width,bitmap.Height,stride,"**array.toPointer??**");
Pela maneira, se alguém poderia me disse como calcular a passo, que seria ótimo.
Solução
Você deve ser capaz de fazer isso sem código inseguro usando GCHandle
. Aqui está um exemplo:
GCHandle handle = GCHandle.Alloc(array, GCHandleType.Pinned);
try
{
IntPtr pointer = handle.AddrOfPinnedObject();
}
finally
{
if (handle.IsAllocated)
{
handle.Free();
}
}
Outras dicas
Use o código inseguro, como este:
unsafe
{
fixed (int* pArray = array)
{
IntPtr intPtr = new IntPtr((void *) pArray);
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow