小编use*_*451的帖子

指向C++/CLI中托管阵列的指针

好吧,我知道你通常会如何声明一个指针:

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

这工作正常,除非managedArray不包含任何元素.在这种情况下,它会抛出IndexOutOfRangeException.

在C#中你可以这样做:

void SomeFunction(float[] managedArray)
{
  fixed (float* managedArrayPtr = managedArray)
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

即使managedArray为空,也没有内存访问权限.我是否真的必须检查每个地方使用指向托管数组的指针的元素数量,或者C++/CLI是否有办法像C#那样做?它应该使用ASM中的'lea'指令,它不进行内存访问.

任何帮助是极大的赞赏!

c# arrays pointers c++-cli managed

5
推荐指数
1
解决办法
5218
查看次数

标签 统计

arrays ×1

c# ×1

c++-cli ×1

managed ×1

pointers ×1