【发布时间】:2010-08-19 16:06:50
【问题描述】:
好的,我知道你通常会如何声明一个指针:
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# 一样做到这一点? 它应该在 ASM 中使用不访问内存的 'lea' 指令。
非常感谢任何帮助!
【问题讨论】:
标签: c# arrays pointers c++-cli managed