如何在函数返回的数组中保留指向元素的指针?
本文关键字:元素 指针 保留 数组 函数 返回 | 更新日期: 2023-09-27 18:11:20
我有一个很大的数组。我将这个数组赋给一个函数,该函数返回指向数组中特定元素的指针。或者,至少应该是这样。相反,函数返回后我得到的指针是0x0000。什么? !
int* getPtr(int[] array)
{
//there is guarenteed no indexOutOfBounds...
fixed(int* p = array[4])
return p;
}
Main()
{
int[] massive = new int[10];
int* p = getPtr(massive);
Console.WriteLine((int)p); //... address is 0... arg
}
我会尝试先给数组一些值。如果你只是写一个指针,指向一个没有数据的内存位置,那就不能保证你会得到什么。
fixed
完成的绑定只持续到受控语句(或块)结束。所以你的代码相当于:
fixed(int* p = array[4]) {
return p;
}
函数返回后,绑定不再有效。来自文档:
语句中的代码执行后,任何固定的变量都将被解除固定并进行垃圾收集。因此,不要指向固定语句之外的那些变量。