3
我想知道從一種方法返回一個固定的指針到另一個方法是否安全 - 固定的對象是否仍然保持固定?例如返回一個固定的指針在C#
struct TestData
{
public int value;
}
public class Class1
{
private TestData data;
public unsafe TestData* GetDataPtr()
{
fixed (TestData* ptr = &data)
{
// IS THIS SAFE?
return ptr;
}
}
}
public class Class2
{
public unsafe void Test()
{
Class1 x = new Class1();
TestData* ptr = x.GetDataPtr(); // is this still fixed?
ptr->value = 2;
}
}
我問的原因是使用這種風格的東西我一直在獲取AccessViolation異常。但是因爲我把它改成了例如直接從Class1設置值我還沒有看到問題發生。
編輯: 我認爲這可以是固定的理由是,如果從外面「TESTDATA * PTR = x.GetDataPtr()」您嘗試將固定的(),你會得到「你不能把一個已經固定的地址表達」。 ..我現在得到它雖然它正在說我的變種「PTR」在「測試()」已被固定..
這是一個很好的觀點,謝謝! (請參閱我的編輯,爲什麼我認爲它可能會這樣做) – user555265 2012-01-05 14:34:15