Хорошо, я знаю, как вы обычно объявляете указатель:
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 #?Следует использовать инструкцию lea в ASM, которая не имеет доступа к памяти.
Любая помощь приветствуется!