Pointer to managed array in C++/CLI

Хорошо, я знаю, как вы обычно объявляете указатель:

void SomeFunction(array<float> ^managedArray)
{
  pin_ptr<float> managedArrayPtr = &managedArray[0];
}

Это работает хорошо, за исключением случая, когда managedArray не содержит элементов. В этом случае он генерирует исключение IndexOutOfRangeException.

В C # вы можете сделать это:

void SomeFunction(float[] managedArray)
{
  fixed (float* managedArrayPtr = managedArray)
  {
  }
}

, который не имеет доступа к памяти и работает, даже если managedArray пуст. Нужно ли проверять количество элементов везде, где я использую указатели на управляемые массивы, или в C ++ / CLI есть способ сделать это, как в C #? It should be using the 'lea' instruction in ASM which does no memory access.

Any help is greatly appreciated!

5
задан user425451 19 August 2010 в 16:06
поделиться